変更されていない行を残してファイルの挿入と修正をパッチするにはどうすればよいですか?

変更されていない行を残してファイルの挿入と修正をパッチするにはどうすればよいですか?

空白で区切られた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

おすすめ記事