我在一个文件夹中有50个文件,并且所有文件都有一个通用模式“ ^^”。我想在“ ^^”之后打印所有内容,并附加文件名,然后将所有提取的行打印到一个输出文件中。虽然我的代码可以在单个文件上正常运行,但不适用于所有文件。
awk '/\^^/{getline; getline; print FILENAME; print}' *.txt > output
例
1.txt
ghghh hghg
ghfg hghg hjg
jhhkjh
kjhkjh kjh
^^
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
2.txt
hghjhg hgj
jhgj
jhgjh kjgh
jhg
^^
bbbbbbbbbbbbbbbbbbbbbbb
所需的output.txt
1.txt
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
2.txt
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
我的实际输出
1.txt
ghghh hghg
1.txt
zzzzzzzzzzzzzzzzzzzzzzzzzzzzz
要在之后打印行^^
,请尝试:
$ awk 'f{print FILENAME ORS $0; f=0} /\^\^/{f=1}' *.txt
1.txt
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
2.txt
bbbbbbbbbbbbbbbbbbbbbbb
这个怎么运作:
f{print FILENAME ORS $0; f=0}
如果变量f
为true(非零),则打印文件名,输出记录分隔符和当前行。然后设置f
回零。
/\^\^/{f=1}
如果当前行包含^^
,则设置f
为1。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句