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)
尝试的方法:
join 命令:
join -a 1 -a 2 file1.txt file2.txt ## full outer join
Run Code Online (Sandbox Code Playgroud)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 中需要修改什么才能产生完整的外连接?
我的解决方案使用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)