Linux 中的文件比较

Linux 中的文件比较

您能帮我满足以下要求吗?

我有两个文件 FILE1 和 FILE2,其内容如下(示例):

文件1:

Column1       Column2
------------------------
M             1.2
A             11
S             hostname
T             TCP
E             120
R             Y

文件2:

Column1        Column2
---------------------------
A             12
M             1.3
T             SSL
S             hostname1

FILE1和FILE2中的字段顺序不同,我想比较FILE1和FILE2,从FILE1中取出第一列并搜索FILE2的整个column1,一旦找到匹配,它必须选择column2值(来自FILE2)并替换FILE1 中相应字段的值。

如果有人可以帮助我的要求,我将不胜感激。

答案1

你可以这样做:

$ join -o 0,1.2,2.2 -a 1 <(sort -k 1,1 FILE1) <(sort -k 1,1 FILE2) |
     awk '{print $1, $NF}'
A 12
E 120
M 1.3
R Y
S hostname1
T SSL

或者保留以下行的顺序FILE1

$ awk '!n {a[$1] = $2; next}
   {print $1, $1 in a ? a[$1] : $2}' FILE2 n=1 FILE1
M 1.3
A 12
S hostname1
T SSL
E 120
R Y

相关内容