我在目录中有多个文件。我想从所有这些文件中提取某些行并打印到输出文件。
File1中
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
如何在这里打印两行?我很感激任何帮助!
答案 0 :(得分:2)
我认为这就是你想要的:
awk 'FNR == 1 { print FILENAME } FNR == 2 || FNR == 4' *.txt
在每个文件的开头,打印文件名。然后打印,当行号为2或4时。
答案 1 :(得分:1)
我认为您应该将命令修改为
awk 'FNR==1{print FILENAME} (FNR==2||FNR==4) {print $0}' *.txt
1.txt
line2
line4
2.txt
line2
line4
答案 2 :(得分:1)
如果您有GNU sed
$ sed -sn '1F;2p;4p' *.txt
file1.txt
line2
line4
file2.txt
line2
line4
-s
分别处理输入文件,以便它们各自拥有自己的地址-n
禁用自动打印1F
如果行号是一个2p;4p
打印第2行和第4行