使用基于匹配字符串的其他文件替换文件中的值(否则:skip)

时间:2018-03-13 10:40:34

标签: bash unix join awk

我有两个文件,我想根据匹配的模式替换 file1 中的某些行和来自 file2 的行,不带删除 file1 file2 中没有匹配项的行。

File1:

1     a
2     b
3     d
4     c

文件2:

2     banana
4     chocolate

文件3:

1     a
2     banana
3     d
4     chocolate

这就是我所拥有的:

  

加入-11 -21 -e0 -o'1.1,2.2'<(sort -k1 file1.txt)<(sort -k1   file2.txt)> file3.txt

...但它删除了file2中没有匹配的行。

1 个答案:

答案 0 :(得分:1)

关注awk可能对您有帮助。

awk 'FNR==NR{a[$1]=$2;next} {print $1,$1 in a?a[$1]:$2}' OFS="\t"  Input_file2   Input_file1

> file3.txt添加到上面的代码中,以便将输出输出到名为file3.txt的输出文件中。