美文网首页
Linux 拼接两个文件列拼接

Linux 拼接两个文件列拼接

作者: 十月汪 | 来源:发表于2016-09-18 17:13 被阅读368次

    目的

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

    $ 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 拼接两个文件列拼接

          本文链接:https://www.haomeiwen.com/subject/sjkgettx.html