【问题标题】:How to merge two files line by line in Bash如何在 Bash 中逐行合并两个文件
【发布时间】:2022-05-02 02:27:55
【问题描述】:

我有两个文本文件,每个文件都包含类似这样的信息

file1.txt            file2.txt
----------           ---------
linef11              linef21
linef12              linef22
linef13              linef23
 .                    .
 .                    .
 .                    .

我想使用 bash 脚本逐行合并这些文件以获得:

fileresult.txt
--------------
linef11     linef21
linef12     linef22
linef13     linef23
 .           .
 .           .
 .           .

如何在 Bash 中做到这一点?

【问题讨论】:

    标签: bash unix


    【解决方案1】:

    你可以使用paste:

    paste file1.txt file2.txt > fileresults.txt
    

    【讨论】:

    • 如果我想使用分隔符,它是如何工作的?
    • @SOaddict paste -d "\n" * > results.txt
    • paste 将用制表符分隔每一列,除非您使用 -d 选项覆盖,因此您可以使用类似 awk、sed 等的东西来格式化每一行.示例:paste file1.txt file2.txt | awk '{printf "%-61s | %s\n", $1,$2}' ...这模仿了diff --side-by-side 输出)
    • paste -d "" 连接没有分隔符、空格的行
    【解决方案2】:

    这里是非粘贴方法

    awk

    awk 'BEGIN {OFS=" "}{
      getline line < "file2"
      print $0,line
    } ' file1
    

    重击

    exec 6<"file2"
    while read -r line
    do
        read -r f2line <&6
        echo "${line}${f2line}"
    done <"file1"
    exec 6<&-
    

    【讨论】:

      【解决方案3】:

      尝试关注。

      pr -tmJ a.txt b.txt > c.txt
      

      【讨论】:

      • 另外,如果要更改分隔符,请使用 -s 选项。 (+1)
      • J 选项在 macOS Mojave 上不起作用,但您的命令可以完美运行。谢谢。
      【解决方案4】:

      检查

      man paste
      

      可能后跟一些命令,例如 untabify 或 tabs2spaces

      【讨论】:

      • Emacs 中的 M-x replace-string 会去掉标签,大概 Vim 和其他一些文本编辑器也可以。
      • 使用 -d 选项指定除制表符以外的分隔符
      【解决方案5】:

      如果要合并和分隔文件中的两个文本,可以使用带有分隔符选项的粘贴

      paste -d "," source_file1 source_file2 > destination_file
      

      不指定分隔符将使用制表符分隔符合并两个文本文件

      paste source_file1 source_file2 > destination_file
      

      【讨论】:

        猜你喜欢
        • 2013-04-29
        • 1970-01-01
        • 2018-06-16
        • 2020-09-06
        • 2016-07-30
        • 1970-01-01
        • 2018-04-17
        • 2017-09-06
        • 1970-01-01
        相关资源
        最近更新 更多