a文件
hadoop@hadoop:~/Desktop$ cat a.txt
whoam
i
b文件
hadoop@hadoop:~/Desktop$ cat b.txt
wei
hong
rao
先看这样的结果
hadoop@hadoop:~/Desktop$ awk '{while("cat a.txt"|getline line){print $0, line};close("cat a.txt")}' b.txt
wei who
wei am
wei i
hong who
hong am
hong i
rao who
rao am
rao i
产生了重复行,考虑加入sed命令
hadoop@hadoop:~/Desktop$ awk '{"sed -n \"${NR}p\" a.txt"|getline line;print $0, line;}' b.txt
wei who
hong am
rao i
这样子很简单的将两个文件map在一起虽然past可以同样实现这样的结果,但是由此AWK用更加复杂的合并是past做不到的,注意上面不能用close,如果采用close会产生如下结果:
hadoop@hadoop:~/Desktop$ awk '{"sed -n \"${NR}p\" a.txt"|getline line;print $0, line;close("sed -n \"${NR}p\" a.txt")}' b.txt
wei who
hong who
rao who