【问题标题】:write a two column file from two files using awk使用 awk 从两个文件写入一个两列文件
【发布时间】:2023-04-07 14:29:01
【问题描述】:

我有两个文件,每个文件一列

1
2
3

4
5
6

我想写一个包含两个元素的唯一文件

1 4
2 5
3 6

我认为使用 awk 应该非常简单。

【问题讨论】:

    标签: linux bash shell unix awk


    【解决方案1】:

    你可以试试paste -d ' ' <file1> <file2>。 (如果没有-d ' ',分隔符将是制表符。)

    【讨论】:

      【解决方案2】:

      paste 对于给出的示例可以正常工作,但它不能很好地处理可变长度行。一个不错的鲜为人知的 core-util pr 提供了一个更灵活的解决方案:

      $ pr -mtw 4 file1 file2
      1 4
      2 5
      3 6 
      

      可变长度示例:

      $ pr -mtw 22 file1 file2
      10         4
      200        5
      300,000,00 6
      

      既然你问过awk,这是一种方法:

      $ awk '{a[FNR]=a[FNR]$0" "}END{for(i=1;i<=length(a);i++)print a[i]}' file1 file2
      1 4 
      2 5 
      3 6
      

      【讨论】:

        【解决方案3】:

        使用awk

        awk 'NR==FNR { a[FNR]=$0;next } { print a[FNR],$0 }' file{1,2}
        

        说明:

        • NR==FNR 将确保我们的第一个操作语句仅针对第一个文件运行。
        • a[FNR]=$0 我们将第一个文件插入到以行号为索引的数组中
        • 第一个文件完成后,我们将进行第二个操作
        • 这里我们打印第一个文件的每一行以及第二个文件

        【讨论】:

        • 注意:如果文件长度不同或超过两个文件,这将失败。
        猜你喜欢
        • 1970-01-01
        • 2015-02-22
        • 1970-01-01
        • 2020-06-05
        • 1970-01-01
        • 2013-02-09
        • 1970-01-01
        • 2014-11-22
        • 1970-01-01
        相关资源
        最近更新 更多