【问题标题】:Merge two files (use line number instead of common field)合并两个文件(使用行号而不是公共字段)
【发布时间】:2012-12-12 06:22:30
【问题描述】:

输入文件1:

1
5
6

输入文件2:

4.5
6.7
9.9

输出:

1  4.5
5  6.7
6  9.9

我尝试了join,但它在这里不起作用,因为没有公共字段。有人对此有想法吗?

【问题讨论】:

    标签: linux shell sed awk


    【解决方案1】:

    根据以下记录,我认为您正在寻找 paste 命令而不是 join

    pax> cat file1
    1
    5
    6
    
    pax> cat file2
    4.5
    6.7
    9.9
    
    pax> paste file1 file2
    1   4.5
    5   6.7
    6   9.9
    

    请咨询您的友好社区man 页面(或info 页面)了解更多详细信息,例如使用-d 选择TAB 以外的分隔符,或使用-s 处理文件顺序而不是并行。

    pax> paste -d= file1 file2
    1=4.5
    5=6.7
    6=9.9
    
    pax> paste -d, -s file1 file2
    1,5,6
    4.5,6.7,9.9
    

    【讨论】:

      【解决方案2】:
      awk 'FNR==NR{a[NR]=$1;next}{print a[FNR],$0}' file2 file1
      

      测试如下:

      > cat file2
      a 
      b
      c
      > cat file1
      1 
      100
      90
      > awk 'FNR==NR{a[NR]=$1;next}{print a[FNR],$0}' file2 file1
      a 1 
      b 100
      c 90
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-14
        • 1970-01-01
        • 1970-01-01
        • 2011-12-18
        • 2015-05-14
        相关资源
        最近更新 更多