我如何修补文件中的插入和修改内容,而保留未修改的行?

我如何修补文件中的插入和修改内容,而保留未修改的行?

我有一个短文件(大约 60 行),它的作用就像一个基本数据库,它具有三个空格分隔的列。第一个是产品名称,第二个是价格,第三个是数量。

product1 5 25
product2 8 30
product3 15 80
product4 2 200

然后我创建一个新文件,其中包含相同格式的一些修改

product1 5 45
product3 18 80
product5 5 25

之后我想将这两个文件合并为一个,它应该看起来像这样

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

相关内容