如何交错两个具有替代行数的txt文件

puv*_*i14 4 sed awk text-processing cat

文件1.txt:

1
2
3
4
5
6
Run Code Online (Sandbox Code Playgroud)

文件2.txt:

A
B
C
D
E
Run Code Online (Sandbox Code Playgroud)

所需的 3 : 1 比例输出 (file3.txt)

1
2
3
A
4
5
6
B
Run Code Online (Sandbox Code Playgroud)

我试过的命令:

  1. sed Rfile2.txt file1.txt >file3.txt
  2. paste -d '\n' file1.txt file2.txt >file3.txt

Sté*_*las 9

paste

paste -d '\n' <file1.txt - - - file2.txt
Run Code Online (Sandbox Code Playgroud)

尽管如果在您的示例中另一个文件中仍有行,它会在其中一个文件用完后继续输出行。

awk

awk '{print}; NR % 3 == 0 {getline < "file2.txt"; print}' file1.txt
Run Code Online (Sandbox Code Playgroud)

或 GNUsed等价物:

sed '3~3 R file2.txt' file1.txt
Run Code Online (Sandbox Code Playgroud)

这一次,一旦file1.txt耗尽就停止,但如果耗尽仍然继续file2.txt(并在awk变体中输出空行,而在 GNU 中不输出任何内容)sed变体中)。

在任一文件耗尽后立即停止:

awk '{print}
     NR % 3 == 0 {
       if ((getline < "file2.txt") <= 0) exit
       print
     }' file1.txt
Run Code Online (Sandbox Code Playgroud)