我有一个短文件(大约 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