比方说,我所拥有的文件1.txt
,2.txt
并且3.txt
,所有分别与下列内容:
foo1
Notes
foo2
bar
现在,我想打印出的线条,其放置后的格局Notes
,直到文件的末尾,并包含两种foo
或bar
图案。为此,我运行以下命令:
awk '/Notes/,/getline==0/ {if (/foo|bar/) {print}}' *txt
然而,该范围似乎是复位尽快awk
与所述第二文件的进行,由于结果是以下的(只foo2
与bar
应显示的条目):
foo2
bar
foo1
foo2
bar
foo1
foo2
bar
显然,如果我做这样的事情:
for i in $(*txt); do awk '/Notes/,/getline==0/ {if (/foo|bar/) {print}}' $i; done
...一切都会好起来的,但是,当然,我不想awk
为每个文件启动一个新的过程,因此这并不是真正的解决方案。
我的问题是,如何分辨awk
将此搜索范围/Notes/,/NR==0/
应用于*txt
掩码/组中的所有文件?
/getline==0/
正在搜索模式 getline==0
,该模式永远不会发生。
如果您有GNU awk,则可以
gawk '/Notes/{notes=1} notes && /foo|bar/ {print} ENDFILE{notes=0}'
否则(更惯用)
awk 'FNR==1{notes=0} /Notes/{notes=1} notes && /foo|bar/'
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句