我使用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现在只匹配段落的开头。
还有其他办法吗?
答案 0 :(得分:4)
^
表示字符串开头。您需要(^|\n)
的行首,例如:
$ awk -v RS='' -v ORS='\n\n' '/(^|\n)bbb/' file
aaa ccc
bbb aaa ccc
bbb aaa ccc