为什么这个 awk 命令不进行完整的外连接?

Mur*_*Rao 3 awk text-processing join

目标:使用文件中存在的公用键合并两个文件的内容

 file1.txt
 =========
 key1   11
 key2   12
 key3   13


 file2.txt
 =========
 key2   22
 key3   23
 key4   24
 key5   25


 Expected Output :
 ==================
 key1   11
 key2   12    22
 key3   13    23 
 key4   24
 key5   25
Run Code Online (Sandbox Code Playgroud)

尝试的方法:

  1. join 命令:

    join -a 1 -a 2 file1.txt file2.txt ## full outer join
    
    Run Code Online (Sandbox Code Playgroud)
  2. awk:

    awk 'FNR==NR{a[$1]=$2;next;}{ print $0, a[$1]}' 2.txt 1.txt
    
    Run Code Online (Sandbox Code Playgroud)

方法 2 导致右外连接而不是完全外连接:

   key1  11
   key2  12    22
   key3  13    23 
Run Code Online (Sandbox Code Playgroud)

在方法 2 中需要修改什么才能产生完整的外连接?

pog*_*bas 5

我的解决方案使用join:

join -a1 -a2  -1 1 -2 1 -o 0,1.2,2.2 -e "NULL" file1 file2 
Run Code Online (Sandbox Code Playgroud)

我awk对加入大文件知之甚少,总是使用join.

key1 11 NULL
key2 12 22
key3 13 23
key4 NULL 24
key5 NULL 25
Run Code Online (Sandbox Code Playgroud)