【问题标题】:How to combine two files consecutively line after line [duplicate]如何逐行连续合并两个文件[重复]
【发布时间】:2018-06-16 22:30:41
【问题描述】:

我有一个包含这些行的文本文件 (A.txt):

Aaaaaaa1
Aaaaaaa2
Aaaaaaa3

其他文本文件 (B.txt) 包含这些行:

Bbbbbbb1
Bbbbbbb2
Bbbbbbb3

我想以这种方式将 A.txt 和 B.txt 合并到其他文件(OUTCOME.txt)中:

Aaaaaaa1
Bbbbbbb1
Aaaaaaa2
Bbbbbbb2
Aaaaaaa3
Bbbbbbb3

我如何使用 read、grep、echo 等在 linux 中使用 bash shell 来实现这一点

【问题讨论】:

  • 粘贴 file1 文件 2|perl -pne "s/\s+/\n/g" 输出 Aaaaaaa1 Bbbbbbb1 Aaaaaaa2 Bbbbbbb2 Aaaaaaa3 Bbbbbbb3

标签: linux bash file combinations


【解决方案1】:

paste 就够了:

$ cat file1
Aaaaaaa1
Aaaaaaa2
Aaaaaaa3

$ cat file2
Bbbbbbb1
Bbbbbbb2
Bbbbbbb3


$ paste -d $'\n' file1 file2
Aaaaaaa1
Bbbbbbb1
Aaaaaaa2
Bbbbbbb2
Aaaaaaa3
Bbbbbbb3

【讨论】:

  • 我正在使用 echo 进行练习,我怎样才能以完全相同的方式进行操作,但使用 echo ?
  • @LenyNguyenová 我不认为您可以通过 echo 轻松获得相同的结果。您需要构建一些循环来读取每个文件的每一行并交替回显它们。
【解决方案2】:

使用 GNU sed:

sed 'R b.txt' a.txt > OUTCOME.txt

输出到 OUTCOME.txt:

啊啊啊1 Bbbbbbb1 啊啊啊2 Bbbbbbb2 啊啊啊3 Bbbbbbb3

【讨论】:

  • 这两个文件可以用echo合并吗?谢谢。
  • 我不知道。
【解决方案3】:

使用echoread

while IFS= read -r line1 && IFS= read -ru3 line2; do
    echo "$line1"
    echo "$line2"
done < file1 3< file2

重要的是第二个read 使用不同的文件描述符(在本例中为3)。

【讨论】:

    【解决方案4】:

    paste + awk 解决方案(针对您当前的输入文件):

    paste a.txt b.txt | awk '{ print $1 ORS $2 }' > outcome.txt
    

    【讨论】:

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