【发布时间】:2015-09-08 11:08:46
【问题描述】:
考虑到一个文本体可以跨越不同数量的行,我需要使用grep、sed 或awk 解决方案在多个文件中搜索相同的模式并获取最后一个单词身体。
一个文件可以包含这样的格式,我想要的单词可以命名为任何格式
call function1(input1,
input2, #comment
input3) #comment
returning randomname1,
randomname2,
success3
call function1(input1,
input2,
input3)
returning randomname3,
randomname2,
randomname3
call function1(input1,
input2,
input3)
returning anothername3,
randomname2, anothername3
我需要将结果打印为
成功3
随机名称3
别名3
我还需要一些关于每个的文件名和行信息。
我试过了
pcregrep -M 'function1.*(\s*.*){6}(\w+)$' filename.txt
这太贪心了,我仍然需要打印出特定的分组值而不是整个模式。我的示例代码中的单词function1 和返回将始终命名为this,并且可以在我的表达式中进行硬编码。
【问题讨论】:
-
这些代码块是同一个文件的一部分吗? IE。您要打印“段落”的最后一个单词还是文件的最后一个单词?
-
是的,代码块是同一个文件的一部分。我想要每一段的最后一个词。
-
我没有意识到我的问题丢失了一些格式,所以我需要澄清一下。使用 'returning' 的行,例如返回 randomname1、randomname2、success3' 可以是一行或 3 行。此外,我的函数将始终命名为 function1,否则我将编辑名称,因此我希望我的搜索模式包含此名称。
-
如果一个“段落”不包含
function1,你什么都不想要打印? -
是的,正确,只有那些段落。
标签: grep sed awk regex awk sed grep