File 打印文件的所有行以及其他文件中的匹配行
我有文件1和文件2。我想打印文件1的所有行,如果:文件1的第1列和第2列与文件2的第1列和第2列匹配,则:将该行从文件2添加到文件1的第1行File 打印文件的所有行以及其他文件中的匹配行,file,awk,grep,File,Awk,Grep,我有文件1和文件2。我想打印文件1的所有行,如果:文件1的第1列和第2列与文件2的第1列和第2列匹配,则:将该行从文件2添加到文件1的第1行 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
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
printf不需要:在a?a[k]中打印$0,k:-。