行数が異なる.csvファイルをマージする

行数が異なる.csvファイルをマージする

ここでも同様の質問をしたことがあります。

これで3つの.csvファイルがあり、そのうちの1つには1行しかありません。

ファイル1.csv

dog
cats
mouse

ファイル2.csv

001a
002a
003c

ファイル3.csv

WORD

出力は次のようになります。

dog,001a,WORD
cats,002a,WORD
mouse,003c,WORD

ソリューション(前の質問から)例:

paste -d, file1.csv file2.csv | awk -F, '{print $1 "," $2 ",WORD"}'

しかし、「WORD」はここにのみ書かれており、file3.csvでは読み込まれません。

pastefile3.csvに各行を埋めるように指示する方法はありますか?それともfile3.csvを変数として保存して割り当てますかawk

ベストアンサー1

もう一つの簡単な方法は次のとおりです。

$ paste  -d, file1 file2 file3 | awk 'BEGIN{FS=OFS=","} {if(NR==1){w=$3} else {$3=w}}1'
dog,001a,WORD
cats,002a,WORD
mouse,003c,WORD

おすすめ記事