カタログファイルを分類し、ファイル名をテキスト行に追加し、ヘッダー行を削除する方法は?これにより、all.txtファイルにヘッダー行が1つしかありません。
答え1
225のテキストファイルがあり、各ファイルには2行のテキスト、ヘッダー行、および数値データがあります。各テキストセットの元のファイル名は、データを含む行の最初の列に含めるファイル名です。また、最初の行を除くすべてのヘッダー行を削除/(コピーではない)したいと思います。これにより、一番上にヘッダー行が表示されます。
私が正しく理解したら、次のことをしたいと思います。
for file in *.txt; do echo "$file" $(tail -n1 $file) >> output.txt; done
次に、output.txtを編集して目的のタイトルを作成します。
答え2
$ cat a.txt
HEADER
a
b
c
$ cat b.txt
HEADER
1
2
3
$ awk 'NR==1 {print; next} FNR==1 {next} {print FILENAME, $0}' *.txt > all.txt
$ cat all.txt
HEADER
a.txt a
a.txt b
a.txt c
b.txt 1
b.txt 2
b.txt 3
答え3
awkを使用して変数を使用してNR
、FNR
最初のファイルのヘッダー行を除くすべての行をスキップします。組み込み変数にアクセスして、FILENAME
現在のファイル名を残りの行の前に追加できます。たとえば、各ファイルに2つのヘッダー行がある場合
awk 'NR<3; FNR>2 {print FILENAME,$0}' *.txt > all.txt