2

我有 2 个命令的输出,例如:第一个 cmd 的操作:

A B
C D
E F
G H

第二个cmd的操作:

I J
K L
M B

我想合并两个输出,如果两个输出的第二列中的值相同,我将从第一个输出中获取条目集。所以,我的输出应该是

A B
C D
E F
G H
I J
K L

//不采用 (MB) sice B 已经存在于第一个条目(AB) 中,因此优先考虑第一个输出

我可以使用 shell 脚本来做到这一点,有什么命令吗?

4

2 回答 2

3

您可以使用 awk:

awk 'FNR==NR{a[$2];print;next} !($2 in a)' file1 file2

A B
C D
E F
G H
I J
K L
于 2013-09-18T14:50:59.817 回答
1

如果条目的顺序不重要,您可以sort在第 2 列进行唯一化:

sort -u -k2 file1 file2

两者-u都在POSIX 标准-k中指定

如果 file1 的第二列中有重复的条目,这将不起作用。

于 2013-09-18T20:58:37.023 回答