用awk获取段落,并使用start-of-line regexp

时间:2016-06-20 12:52:02

标签: linux shell unix awk gawk

我使用awk从文本文件中获取段落,如下所示:

awk -v RS='' -v ORS='\n\n' '/pattern/' ./textfile

说我有以下文本文件:

aaa bbb ccc
aaa bbb ccc
aaa bbb ccc

aaa ccc
bbb aaa ccc
bbb aaa ccc

ccc bbb aaa
ccc bbb aaa
ccc bbb aaa

现在我只希望段落中的(原始)行开始之一带有“bbb”(因此第二段)。但是 - 由于^行,使用正则表达式RS=''将不再起作用(我推测); awk现在只匹配段落的开头。

还有其他办法吗?

1 个答案:

答案 0 :(得分:4)

^表示字符串开头。您需要(^|\n)的行首,例如:

$ awk -v RS='' -v ORS='\n\n' '/(^|\n)bbb/' file
aaa ccc
bbb aaa ccc
bbb aaa ccc