CSVファイルに新しい列を追加する

CSVファイルに新しい列を追加する

bashスクリプトを使用してcsvファイルの先頭に2つの新しい列を追加して、ファイル名の最初の4文字が最初の列の値であり、次の2文字が2番目の列の値になるようにしたいと思います。列。たとえば、私の.csvファイル名が「exam_20」の場合、「exam」のすべてのエントリを含む新しい最初の列と「20」のすべてのエントリを含む新しい2番目の列が必要です。 Bashでこれを達成する方法を知っている人はいますか?よろしくお願いします。

ベストアンサー1

そしてawk

#!/usr/bin/awk -f

BEGIN { OFS="," };

FNR==1 {
  split(FILENAME,c,/[_.]/);
};

{ print c[1], c[2], $0 }

または、コマンドラインから1行のコードで実行するか、シェルスクリプトに含まれて実行します。

awk -v OFS=',' 'FNR==1 {split(FILENAME,c,/[_.]/)}; {print c[1],c[2],$0}' *.csv

c各入力ファイルに対して、文字クラスを[_.]フィールド区切り文字として使用して、各FILENAMEを配列に分割します。配列のフィールド 1 と 2 は、cファイルの各行の前に追加されます。

出力例:

$ ./zsha.awk exam_20.csv 
exam,20,1,2,3,4
exam,20,5,6,7,8
exam,20,9,10,11,12

例で使用されている入力データは次のとおりです。

$ cat exam_20.csv 
1,2,3,4
5,6,7,8
9,10,11,12

おすすめ記事