両方のCSVの列を比較し、一致をマージします。

両方のCSVの列を比較し、一致をマージします。

2つのCSVファイルがあり、2番目のファイルの3番目の列と一致する最初のファイルの最初の列に基づいてマージしようとしています。その行はソートされません。

ファイル1.csv:

android,1,2
osx,2,5

ファイル2.csv:

Converting,:Developer::|[E],android,Exact,,,,8,31
Converting,:Developer::|[E],osx,Exact,,,,8,31
Converting,:Developer::|[E],windows,Exact,,,,8,31

そして、次のようになりたい出力.csv:

Converting,:Developer::|[E],android,Exact,,,,8,31,1,2
Converting,:Developer::|[E],osx,Exact,,,,8,31,2,5
Converting,:Developer::|[E],windows,Exact,,,,8,31,,

私はすべての例を試しました

awk -F',' 'FNR==NR.....

ここで見つけることができますが、正しく見つけることができないようです。

ベストアンサー1

joinあなたはこれを使うことができます

join -1 1 -2 3 -t ',' -a 2 -o 2.{1..9} 1.{2..3}  <(sort file1.csv) <(sort file2.csv)

-1-2比較するファイルのフィールドを指定します。一致しない行を印刷する
-tフィールドに使用する区切り文字を指定します。
-a 2<file2>
-o<file>.<field>

おすすめ記事