显示所有带有 .txt 扩展名的文件中的特定行

显示所有带有 .txt 扩展名的文件中的特定行

如何打印当前目录中名称以 结尾的每个文件的特定行(例如第 7 行和第 15 行).txt

答案1

许多方法。以下是其中几种:

  • awk

    awk 'FNR==7 || FNR==15' *.txt
    

    FNR是当前文件的行号。由于awk表达式求值为真时的默认操作是打印当前行,因此这将打印每个.txt文件的第 7 行和第 15 行。

Awk 是我所知道的唯一一款可以轻松区分所有输入的行号和当前文件的行号的工具(其他工具也可以,但不是那么简单)。因此,其他建议涉及 shell 循环:

  • sed

    for f in *.txt; do sed -n '7p;15p' "$f"; done
    
  • Perl

    for f in *.txt; do perl -ne 'print if $.==7 or $.==15' "$f"; done
    

    或者,为了避免 shell 循环:

    perl -ne '$c++; print if $c==7 or $c==15; $c=0 if eof' *.txt
    

相关内容