使用awk或sed打印包含2个以上模式的段落
我只想打印以“select”开头,以“;”结尾的段落,但应该包含“IN cccc”,例如,如果我有以下代码使用awk或sed打印包含2个以上模式的段落,awk,sed,Awk,Sed,我只想打印以“select”开头,以“;”结尾的段落,但应该包含“IN cccc”,例如,如果我有以下代码 select aaaa bbbb IN cccc ; select dddd eeeee IN ffff ; select rrrr eeeee IN cccc ; 结果是 select aaaa bbbb IN cccc ; select rrrr eeeee IN cccc ; 下面是我使用的awkawk'/^select*/,/^/{if($0~/^IN cccc/);print
select aaaa
bbbb
IN cccc
;
select dddd
eeeee
IN ffff
;
select rrrr
eeeee
IN cccc
;
结果是
select aaaa
bbbb
IN cccc
;
select rrrr
eeeee
IN cccc
;
下面是我使用的awkawk'/^select*/,/^/{if($0~/^IN cccc/);print}'输入文件
但是我得到了我文件的全部内容你可以试试这个
awk
:
awk 'BEGIN{ORS=RS=";"} /^[[:space:]]*select.*IN cccc/' file
这里,
-输出记录分隔符ORS
-输入记录分隔符RS
- 您可以试试这个
awk
:
awk 'BEGIN{ORS=RS=";"} /^[[:space:]]*select.*IN cccc/' file
这里,
-输出记录分隔符ORS
-输入记录分隔符RS
如果($0~/^在cccc/){print}
当然,修复该问题不足以实现您的目标。@fedorqui我使用了以下awk,但似乎缺少了一些“awk”/^select*/,/^/{如果($0~/^IN cccc/);print}inputfile您的问题是分号的位置错误。你的意思是if($0~/^IN-cccc/){print}代码>当然,修复该问题不足以实现您正在尝试的操作。注意:\s
是特定于GNU awk的。如果使用nawk或mawk,请使用[[:space:]
。这将错误打印包含选择的记录,从而破坏cccc
。idk,如果可以,或者如果可以的话-如果有问题,请在您关心的单词周围添加单词边界(GNU awk)、空格、换行符或其他内容…注意:\s
是GNU awk特有的。如果使用nawk或mawk,请使用[[:space:]
。这将错误打印包含选择的记录,从而破坏cccc
。idk如果可以,或者如果可以,如果可以-如果有问题,请在您关心的单词周围添加单词边界(GNU awk)、空格、换行符或其他内容。。。。