我如何打印当前目录中名称以 结尾的每个文件的特定行(例如第 7 行到第 15 行).txt
?
我知道 7 和 15 是这样的
awk 'FNR==7 || FNR==15' *.txt
但是如果我想从 7 点到 15 点我该怎么做?
答案1
用于sed
打印.txt
当前目录中所有文件的第7至第15行:
for i in *.txt; do sed -n '7,15 p' "$i"; done
这里7,15
表示打印的行范围sed
,在本例中是从 7 到 15。
正如你使用的那样awk
:
awk 'FNR>=7 && FNR<=15' *.txt
head
和的组合tail
:
for i in *.txt; do tail -n +7 "$i" | head -9; done
或者@steeldriver如上所述,使用较新的 GNU sed
(任何受支持的 Ubuntu 版本都有),您可以执行以下操作:
sed -sn '7,15 p' *.txt
这里-s
是将每个文件分别处理,而不是将它们全部组合成一个单独的流。