匹配和替换列

Matching and replacing columns

我正在尝试匹配两个文件的前两列,如果匹配,则用另一列替换单个列的值。

如果 file1 的第 1 列和第 2 列匹配 file2 的第 1 列和第 2 列,那么我想用文件 2 的第 3 列替换 file1 的第 2 列。我最初使用的是 awk,但我不确定如何匹配两个每个文件的列,而不仅仅是一个:

awk -vOFS='\t' 'NR==FNR{a[]=;a[]=; next}{=a[]; =a[]; print}' file2.txt file1.txt

提前感谢您的帮助!

文件 1:

112 name1 aaaaa

111 name1 aaaaa

122 name2 bbbbb

133 name3 ccccc

文件 2:

111 name1 sarah

122 name2 brittany

133 name3 tony

当前输出:

    sarah   aaaaa

111 sarah   aaaaa

122 brittany    bbbbb

133 tony    ccccc

预期输出:

112 name1 aaaaa

111 sarah aaaaa

122 brittany bbbbb

133 tony ccccc

使用awk

$ awk 'FNR==NR {array[]=; next} {if ( ~ array[]) print [=10=]; if ( !~ array[]) print , array[], $NF}' file2 file1
112 name1 aaaaa

111 sarah aaaaa

122 brittany bbbbb

133 tony ccccc

请您尝试以下操作:

awk -v OFS='\t' 'NR==FNR {a[,] = ; next} {if (length(a[,]))  = a[,]} 1' file2.txt file1.txt

输出:

112     name1   aaaaa

111     sarah   aaaaa

122     brittany        bbbbb

133     tony    ccccc

(保留中间的空白行)