2つのテキストファイルの間にSQL MERGE
(またはUPSERT
)と同等の処理を実行するUNIXシェルソリューションを探しています。他のフィールドは更新/上書きすることができます。レコードを更新して2つのテキストファイルを結合する(既存のものを更新する、新しいものを挿入する)
入力データ
これは私の元のデータである:最初の3つのフィールド(製品、カスタマーと日)がキーフィールドです
AA;123;2016-01-31;1;456.53
AA;123;2016-02-01;1;75.24
AB;123;2000-08-08;1;756.1
AB;456;2016-07-07;2;8.24
CC;123;2007-07-21;15;10.34
CC;456;2009-09-09;9;943.65
CC;789;2005-04-23;1;1345.6
、そして最後に2つのフィールド(数量および量)を更新することができます。
これが唯一の新規および更新されたデータが含まれている私の第二のファイルです:両方のファイルがでソートされている
AA;123;2016-01-31;7;983.63
AA;123;2016-08-24;17;1687.73
CC;456;2009-09-09;11;2161.65
DD;91;2016-08-03;5;98.48
:
sort -t';' -k1 -k2 -k3
第一及び第三のレコードは、既存の行を上書きする必要があります(更新数量および金額)、2番目と3番目のレコードは新しい行として挿入する必要があります。私はsort
、uniq
またはawk
とperl
を使用していくつかの簡単な解決策を探しています
所望の出力
AA;123;2016-01-31;7;983.63
AA;123;2016-08-24;17;1687.73
AA;123;2016-02-01;1;75.24
AB;123;2000-08-08;1;756.1
AB;456;2016-07-07;2;8.24
CC;123;2007-07-21;15;10.34
CC;456;2009-09-09;11;2161.65
CC;789;2005-04-23;1;1345.6
DD;91;2016-08-03;5;98.48
。
をそして私が見つけた[awkの ' '![$ 0] ++''](http://unix.stackexchange.com/questions/159695/how -does-awk-a0-work)を入力してください。 –