空白で区切られた3つの列を持つ基本データベースのように動作する短いファイル(約60行)があります。最初のものは製品名、2番目は価格、3番目は数量です。
product1 5 25
product2 8 30
product3 15 80
product4 2 200
次に、同じ形式をいくつか変更して新しいファイルを作成します。
product1 5 45
product3 18 80
product5 5 25
後でこれら2つのファイルを1つにマージしたいと思います。次のようにする必要があります。
product1 5 45
product2 8 30
product3 18 80
product4 2 200
product5 5 25
diffとpatchを試してみましたが、更新ファイルにない行が削除されました。この問題をどのように解決するのですか?
ベストアンサー1
ソースファイルがdata
あり、更新ファイルがあると仮定すると、updates
この短いコードは要件を満たします。
awk '{ h[$1] = $0 } END { for (i in h) { print h[i] } }' data updates
awk
コードは次のセクションに分かれています。
{ h[$1] = $0 } # save each line, keyed by first element, overwriting as necessary
END { for (i in h) { print h[i] } } # when we have read everything, print each element in the array