繁体   English   中英

从多个文件中打印两行,文件名在awk中

[英]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禁用自动打印
  • 如果行号为1,则1F打印文件名
  • 2p;4p打印第二行和第四行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM