awkを使用してCSVファイルに列を追加する

awkを使用してCSVファイルに列を追加する

awkを使用して配列のCSVファイルに列を追加する必要があります。

例えば、

input.csv

a,10
b,11

array = (100 200)

output.csv次のようにする必要があります

a,10,100
b,11,200

このコマンドを試しましたが動作しません

awk -F"," 'BEGIN { OFS = "," } {for (x in array) $3=array[x]; print}' input.csv> output.csv

ベストアンサー1

ぜひこれを使うべきですかawk?このpasteユーティリティはまさにこの種の仕事のために設計されています。arrayシェル配列を想定すると、次のようになります。

array=(100 200)
printf "%s\n" "${array[@]}" | paste -d, input.csv - > output.csv

printf各配列メンバーを新しい行に入れるだけです。次に、カンマを区切り文字として使用して、pasteinput.csvの入力行と-(つまりパイプ出力)を貼り付けます。printf


配列がarray.txtなどの改行で区切られたファイルの場合:

100
200

それではもっと簡単です。

paste -d, input.csv array.txt > output.csv

おすすめ記事