我想比较两个文件,并希望输出包含两个文件的唯一内容+第一个文件的公共内容。
例子 :-
文件A.txt
A=x
B=y
C=z
文件B.txt
A=p
D=q
E=r
输出 :-
A=x
B=y
C=z
D=q
E=r
请帮助我解决这个问题。我想在 Linux 服务器上执行此操作,因此可以使用任何命令或 shell 脚本。
答案1
您可以使用awk
:
$ awk -F= '{a[$1]++; if(a[$1]==1){print}}' A.txt B.txt
A=x
B=y
C=z
D=q
E=r
解释
a[$1]++;
:将第一个字段保存为数组中的键a
,并将与该键关联的值加一。这意味着第一次看到某个键时(例如,第一次A=x
),该值将为 1,但第二次则为 2。这让我们可以对唯一元素进行计数。if(a[$1]==1){print}
:如果第一个字段只出现过一次,则打印。
因为我们是B.txt
在 后进行处理A.txt
,所以 中的值A.txt
是被保留的值。