如何从2个文件顺序读取1行?

New*_*ser 12 unix bash

我如何一次从1个文件中读取2个文件?假设我有file1和file2以及以下内容:

文件1:

line1.a    
line2.a   
line3.a   
Run Code Online (Sandbox Code Playgroud)

文件2:

line1.b   
line2.b   
line3.b   
Run Code Online (Sandbox Code Playgroud)

我如何获得这样的输出 -

line1.a   
line1.b   
line2.a   
line2.b   
line3.a   
line3.b   
...
...
Run Code Online (Sandbox Code Playgroud)

jay*_*ngh 30

您可以通过纯粹的bash方式或使用名为的工具来完成paste:

你的档案:

[jaypal:~/Temp] cat file1
line1.a
line2.a
line3.a
line4.a

[jaypal:~/Temp] cat file2
line1.b
line2.b
line3.b
line4.b
Run Code Online (Sandbox Code Playgroud)

使用文件描述符的纯Bash解决方案:

<&3告诉bash读取描述符3中的文件.您将意识到Stdin,Stdout和Stderr使用0,1和2描述符.所以我们应该避免使用它们.此外,9之后的描述符由bash内部使用,因此您可以使用3到9中的任何一个.

[jaypal:~/Temp] while read -r a && read -r b <&3; do
> echo -e "$a\n$b";
> done < file1 3<file2
line1.a
line1.b
line2.a
line2.b
line3.a
line3.b
line4.a
line4.b
Run Code Online (Sandbox Code Playgroud)

粘贴工具:

[jaypal:~/Temp] paste -d"\n" file1 file2
line1.a
line1.b
line2.a
line2.b
line3.a
line3.b
line4.a
line4.b
Run Code Online (Sandbox Code Playgroud)