Linux 拼接两个文件列拼接

目的

拼接两个没有相同列的文件。

$ cat file1
aaaaaa
bbbbbb
cccccc
dddddd
$ cat file2
111111
222222
33333

使用 join

首先考虑 join。先输出行号,再利用行号 join.

$ awk '{print NR,$1}' file1 > file1.tmp
$ awk '{print NR,$1}' file2 > file2.tmp
$ join file1.tmp file2.tmp | awk '{print $2,$3}'
aaaaaa 111111
bbbbbb 222222
cccccc 33333

使用 awk

$ awk '{a="NULL";getline a < "file2" ;print $0,a}' file1
aaaaaa 111111
bbbbbb 222222
cccccc 33333
dddddd NULL

解释一下

  • getline 获取 file2 中的每一行
  • 若获取不到,变量 a 的值为 NULL
    这个方法很赞。

你可能感兴趣的:(Linux 拼接两个文件列拼接)