我有文件1和文件2。我想打印 file1 的所有行,如果: file1 的第 1 列和第 2 列与 file2 的第 1 列和第 2 列匹配,则: 将该行从 file2 添加到 file1 的行。
File1:
1 30 40 name info
1 3 2 desc info
1 3 2 id info
10 35 45 name info
File2:
20 30 40 numbers desc
1 3 2 desc name
Result:
1 30 40 name info -
1 3 2 desc info desc name
1 3 2 id info desc name
10 35 45 name info -
我做了这段代码:
awk 'NR==FNR {h[$1,$2]=$0;next}{print h[$1,$2],$0}' file1.txt file2.txt > result.txt
但它只打印匹配的行,而我想要所有行。
最佳答案
这个 awk 一行应该有帮助:
awk '{k=$1 FS $2}
NR==FNR{a[k]=$4FS$5;next}{printf "%s %s\n", $0, (k in a?a[k]:"-") }' file2 file1
关于file - 打印文件的所有行以及其他文件中的匹配行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37943581/