我需要从第6行的所有* .txt文件开始直到最后,所有结果都应保存在一个新的单个文件中,且每个文件的名称应位于结果之前
示例:具有不同的txt文件,结果应该是这样,从第三行到最后一行都是这样
file 1
3
4
5
file 2
3
4
5
file 3
3
4
5
使用GNU sed
:
sed -s '1F;6,$!d' -- *.txt > output
可移植地,您可以awk
改用:
awk 'FNR == 1 {print FILENAME}; FNR>=6' ./*.txt > output
(请注意,在两种情况下,都将隐藏文件排除在外)。
空文件将不会被引用,但是少于6行的文件将被引用。如果您不想听到这些,可以执行以下操作:
sed -s '6F;6,$!d' -- *.txt > output
awk 'FNR == 6 {print FILENAME}; FNR>=6' ./*.txt > output
或者,如果您想查看所有文件:
for f in *.txt; do
printf '%s\n' "$f"
tail -n +6 < "$f"
done > output
使用GNU tail
,您还可以执行以下操作:
$ tail -vn +6 -- *.txt
==> a.txt <==
6
7
8
9
10
==> b.txt <==
6
7
8
9
10
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句