我的输入文件如下,其中记录由空行分隔。我需要打印xx
行首的记录(段落) 。
cat in.txt
a cfg
b hfh
c gfh
xx jhl
d kjl
a opi
b ghj
c tyu
yy xxx
d ghj
a xxx
b fgk
c ghf
z zxx
d ghj
我的预期输出是:
a cfg
b hfh
c gfh
xx jhl
d kjl
我尝试了下面的命令,但它不起作用:
awk -v RS='' -v ORS='\n\n' "/^XX/" in.txt
^
在这种情况下不起作用
答案1
使用以下方法更容易perl
:
perl -00 -ne 'print if /^xx/m' in.txt
该m
标志启用多行模式,^
不仅$
在记录的开头和结尾匹配,而且在记录内每行的开头和结尾匹配。
使用awk
,您始终可以执行以下操作:
awk -v RS='' -v ORS='\n\n' '/(^|\n)xx/' in.txt
即,匹配记录开头 ( ^
),或|
换行符 ( \n
) 后的 ( )。