awk 合并文件

来源:互联网 发布:农村淘宝佣金怎么查 编辑:程序博客网 时间:2024/05/21 16:54


a文件

hadoop@hadoop:~/Desktop$ cat a.txt

who
am
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

原创粉丝点击