同じ行数を持つ2つのCSVを接続する方法

同じ行数を持つ2つのCSVを接続する方法

同じ行数を持つ2つのソートされたCSVファイルがあります。これら2つのCSVファイルを結合したいと思います。

1.csv
1,2,3
4,5,6
7,8,9

2.csv
10,11,12
13,14,15
16,17,18

result.csv
1,2,3,10,11,12
4,5,6,13,14,15
7,8,9,16,17,18

試しましたが、 cat 1.csv 2.csv >result.csv 参加する代わりに追加されます。

ベストアンサー1

場所paste:

paste -d, {1,2}.txt

-d,区切り記号を,。に設定する{1,2}.txtのは、シェルで実行される中かっこ拡張です1.txt 2.txt


あなたが少し好きならawk

awk 'NR==FNR {a[FNR]=$0; next} {print a[FNR], $0}' OFS=, {1,2}.txt
  • NR==FNR最初のファイルにのみ適用されます。レコード番号をキーに、レコードを値として配列を{a[FNR]=$0; next}生成します。a

  • 2番目のファイルの場合は、{print a[FNR], $0}その行番号に配列要素を印刷し、その後にOFS=,出力フィールド区切り文字を次のように設定します。,

例:

$ cat 1.txt 
1,2,3
4,5,6
7,8,9

$ cat 2.txt 
10,11,12
13,14,15
16,17,18

$ paste -d, {1,2}.txt
1,2,3,10,11,12
4,5,6,13,14,15
7,8,9,16,17,18

$ awk 'NR==FNR {a[FNR]=$0; next} {print a[FNR], $0}' OFS=, {1,2}.txt
1,2,3,10,11,12
4,5,6,13,14,15
7,8,9,16,17,18

おすすめ記事