[英]print two lines from multiple files with the file name in awk
我的目录中有多个文件。 我想从所有这些文件中提取某些行,然后打印到输出文件。
文件1
line1
line2
line3
line4
文件2
line1
line2
line3
line4
就像这样,我有很多文件。 期望的输出
File1
line2
line4
File2
line2
line4
我试过了
awk 'FNR==2 {print FILENAME, $0}' *.txt
这仅打印第2行。我也尝试过FNR==2 & 4
如何在这里打印两行? 不胜感激任何帮助!
我认为这就是您想要的:
awk 'FNR == 1 { print FILENAME } FNR == 2 || FNR == 4' *.txt
在每个文件的开头,打印文件名。 行号是2或4时,然后打印。
我认为您应该将命令修改为
awk 'FNR==1{print FILENAME} (FNR==2||FNR==4) {print $0}' *.txt
1.txt
line2
line4
2.txt
line2
line4
如果您有GNU sed
只是为了好玩
$ sed -sn '1F;2p;4p' *.txt
file1.txt
line2
line4
file2.txt
line2
line4
-s
分别对待输入文件,以便它们每个都有自己的寻址 -n
禁用自动打印 1F
打印文件名 2p;4p
打印第二行和第四行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.