共通ヘッダーを使用した複数のファイルの関連付け

共通ヘッダーを使用した複数のファイルの関連付け

複数のテキストファイルがあり、各ファイルの内容は次のとおりです。

attribute1,attribute2,...
1,2,...

列名を記述する最初の行は、すべてのファイルで同じです。

ファイルの2番目の行をリンクし、元のファイルの各行のファイル名を含む新しい列を追加し、最初の行の1つを新しいファイルの最初の行にしたいと思います。たとえば、必要な新しいファイルは次のとおりです。

file,attribute1,attribute2,...
file1,1,2,...
file2,11,12,...
file3,21,22,...

どうすればいいですか?

答え1

ファイル名を追加するには、次のようにしますawk

awk -v OFS=, 'NR==1{print "file", $0};FNR==2{print FILENAME, $0}' file1 file2 ... fileN >outfile

入力の最初の行()の場合は更新されたヘッダーをNR==1印刷し、||各ファイルの2行目()の場合は更新されFNR==2たヘッダー()FILENAMEと行($0)を印刷します。


編集する前の最初の答えです。
あなたはこれを行うことができますsed

sed -n '1p;n;p' file1 file2 ... fileN >outfile

-n印刷を抑制し、1p最初の行を印刷してから、各行(奇数行)ごとにパターンスペースを消去し、拡張行(つまりn偶数行)を読み取ってp印刷します。

答え2

{   printf file,; head -n1 <file
    grep -n '' ./file* /dev/null|
    sed -ne'/^[^:]*:2:/s/:.:/,/p'
}   >./new_file

grep各行の先頭にファイル名が表示され、行番号で選択するのにも役立ちますn。ただし、ファイル名にコロンが含まれていると正しく機能しない可能性があります。

答え3

そしてtail

cat file1.txt && tail -q -n +2 file2.txt file3.txt ..

関連情報