合并两个文件中的交替行

Nai*_*ita 9 sed awk text-processing paste

文件1:

.tid.setnr := 1123 
.tid.setnr := 3345 
.tid.setnr := 5431
.tid.setnr := 89323
Run Code Online (Sandbox Code Playgroud)

文件2:

.tid.info := 12
.tid.info := 3
.tid.info := 44
.tid.info := 60
Run Code Online (Sandbox Code Playgroud)

输出文件:

.tid.info := 12
.tid.setnr := 1123
.tid.info := 3
.tid.setnr := 3345
.tid.info := 44
.tid.setnr := 5431
.tid.info := 60
.tid.setnr := 89323
Run Code Online (Sandbox Code Playgroud)

Ste*_*itt 25

使用paste

paste -d \\n file2 file1
Run Code Online (Sandbox Code Playgroud)


gle*_*man 5

另一个 awk 解决方案:

awk '{print; getline < "file1"; print}' file2
Run Code Online (Sandbox Code Playgroud)


Sté*_*las 5

paste解决方案是最便携和最有效的。我只是提到这个替代方案,以防您更喜欢在两个文件的行数不同的情况下的行为:

使用 GNU sed

sed Rfile1 file2
Run Code Online (Sandbox Code Playgroud)

如果file1行数少于file2,则当file1耗尽时,sed将不会为其输出任何内容(与 的空行相反paste)。

如果file1有比 多的行file2,那么这些多余的行将被丢弃(而不是为file2with打印空行paste)。

$ paste a b
1       a
2       b
3
4
$ paste -d \\n a b
1
a
2
b
3

4

$ sed Rb a
1
a
2
b
3
4
$ sed Ra b
a
1
b
2
Run Code Online (Sandbox Code Playgroud)