如何打印当前目录中名称以 结尾的每个文件的特定行(例如第 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