【发布时间】:2014-05-24 03:27:00
【问题描述】:
我正在尝试将新文件与旧文件合并。
主列上有一个唯一键,然后是分隔符“=”和一个值。
- 如果两个文件中都存在主键,我必须保留旧值,如果新值不同,请在该行附近添加注释。
- 如果主键只存在于旧的,请保留它。
- 如果主键只存在于new中,插入它
例如:
在旧文件中:
$ cat oldfile.txt
VAR NAME ONE = FOO
TWO BAR = VALUE
; this is a comment
在新的:
$ cat newfile.txt
TWO BAR = VALUE
; this is a comment
VAR NAME ONE = BAR
NEW = DATA
期望的输出:
$ cat output.txt
VAR NAME ONE = FOO
;new value:
; VAR NAME ONE = BAR
TWO BAR = VALUE
; this is a comment
NEW = DATA
我尝试处理 diff,但它只能逐行工作,我很确定 awk 可以做到。但我不是 awk 专家。我可以在 ksh 中写一些东西来完成这项工作,但我很确定还有另一种更快更简单的方法。
请注意,以前文件和新文件中的行顺序可能会改变,而且我使用的是 AIX (Unix),而不是 Linux。
感谢您的帮助:)
编辑:
我在第一篇文章中没有准确,如果之前的文件中没有新的 cmets,则必须保留它们。
【问题讨论】: