6行目から最後まですべての* .txtファイルをsedする必要があります。すべての結果は、結果の前に各ファイル名を含む新しい単一ファイルになければなりません。
例:他のtxtファイルの場合、結果は3行目から最後まで単一のファイルでなければなりません。
file 1
3
4
5
file 2
3
4
5
file 3
3
4
5
答え1
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