Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 打印文件的所有行以及其他文件中的匹配行_File_Awk_Grep - Fatal编程技术网

File 打印文件的所有行以及其他文件中的匹配行

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

我有文件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  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:-。