
2つの.csvファイル(file1.csvとfile2.csv)があります。 file2.csvの行にfile1.csvの行と同じ最初のフィールドがあるとします。 file1.csvの行全体がfile2.csvの行全体を置き換えたいと思います。 file2から行を削除し、file1から行を追加するスクリプトを試しました。一致が含まれていないfile2の行を起動し、file1から追加しようとしましたが失敗しました。
ファイル1.csv:
1,2,3
2,3,4
3,4,5
ファイル2.csv
6,7,8
7,8,9
1,9,0
望ましい結果:
6,7,8
7,8,9
1,2,3
答え1
公開した単純な入力ファイルの場合:
$ awk -F, 'NR==FNR {a[$1]=$0; next} $1 in a {$0=a[$1]} 1' file1.csv file2.csv
6,7,8
7,8,9
1,2,3
一般に、CSV形式は、単純なAwkスクリプトを不適切にする可能性がある引用符を含む区切り文字やその他の不快なエントリを許可します。