この awk コマンドが完全な外部結合を実行しないのはなぜですか?

この awk コマンドが完全な外部結合を実行しないのはなぜですか?

目的:ファイル内の公開鍵を使用して2つのファイルの内容をマージします。

 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

試みた方法:

  1. join注文する:

    join -a 1 -a 2 file1.txt file2.txt ## full outer join
    
  2. awk:

    awk 'FNR==NR{a[$1]=$2;next;}{ print $0, a[$1]}' 2.txt 1.txt
    

方法2は、完全外部結合の代わりに右外部結合を生成する。

   key1  11
   key2  12    22
   key3  13    23 

完全な外部結合を生成するには、方法2で何を修正する必要がありますか?

ベストアンサー1

私の解決策は以下を使用しますjoin

join -a1 -a2  -1 1 -2 1 -o 0,1.2,2.2 -e "NULL" file1 file2 

awk私は大容量のファイルの組み合わせについてはよくわかりませんjoin

key1 11 NULL
key2 12 22
key3 13 23
key4 NULL 24
key5 NULL 25

おすすめ記事