csvファイルの各行の末尾にawkコマンドの結果を追加したいと思います。

csvファイルの各行の末尾にawkコマンドの結果を追加したいと思います。

次のファイルがあります。

入力ファイル.csv:

"Input_File:",AB-ABCDE.20220128.02064600,,,,
"Date_Time Received:","1-28-22 3:47",,,,
1, abc, xyz,pq,11
2, def, xyz,rs,22
3, ghi, xyz,tu,33
4, jkl, xyz,vw,44
5, mno, xyz,xy,55

出力ファイル.csv:

1, abc, xyz,pq,11,AB-ABCDE.20220128.02064600,1-28-22 3:47
2, def, xyz,rs,22,AB-ABCDE.20220128.02064600,1-28-22 3:47
3, ghi, xyz,tu,33,AB-ABCDE.20220128.02064600,1-28-22 3:47
4, jkl, xyz,vw,44,AB-ABCDE.20220128.02064600,1-28-22 3:47
5, mno, xyz,xy,55,AB-ABCDE.20220128.02064600,1-28-22 3:47

コマンドからファイル名と日付/時刻を取得し、次のようawkに保存します。

file_name=`awk -F',' 'NR==1{print $2}' InputFile.csv`
date_time=`awk -F',' 'NR==2{print $2}' InputFile.csv`

私にとって必要なのは、キャプチャされたfile_nameとdate_timeを各行の最後の2つの列として追加することです。

この出力形式を実装するのに役立ちます。

ベストアンサー1

$ awk -F'"?,"?' -v OFS=',' 'NR<3{a[NR]=$2; next} {print $0, a[1], a[2]}' InputFile.csv
1, abc, xyz,pq,11,AB-ABCDE.20220128.02064600,1-28-22 3:47
2, def, xyz,rs,22,AB-ABCDE.20220128.02064600,1-28-22 3:47
3, ghi, xyz,tu,33,AB-ABCDE.20220128.02064600,1-28-22 3:47
4, jkl, xyz,vw,44,AB-ABCDE.20220128.02064600,1-28-22 3:47
5, mno, xyz,xy,55,AB-ABCDE.20220128.02064600,1-28-22 3:47

誰もがゴルフをしたい場合(現在削除されたコメントからインスピレーションを得ている)、sを削除する必要はありません"

$ awk -F, '{a[NR]=$2} NR>2{print $0,a[1],a[2]}' OFS=, InputFile.csv
1, abc, xyz,pq,11,AB-ABCDE.20220128.02064600,"1-28-22 3:47"
2, def, xyz,rs,22,AB-ABCDE.20220128.02064600,"1-28-22 3:47"
3, ghi, xyz,tu,33,AB-ABCDE.20220128.02064600,"1-28-22 3:47"
4, jkl, xyz,vw,44,AB-ABCDE.20220128.02064600,"1-28-22 3:47"
5, mno, xyz,xy,55,AB-ABCDE.20220128.02064600,"1-28-22 3:47"

おすすめ記事