Sedはすべてのtxtファイルの6行目から始まり、すべての結果を単一のファイルに出力できます。

Sedはすべてのtxtファイルの6行目から始まり、すべての結果を単一のファイルに出力できます。

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

関連情報