Linux bash 使用所有可用行将两个文本文件编织成一个备用行

mis*_*way 0 bash shell merge sed cat

我希望将两个文本文件合并为一个,其中一个文本文件中的所有行都变成奇数行号,另一个文件变成偶数行号,例如将文件编织在一起

输入1.txt

1, 267, Note_on_c, 0, 67, 100
1, 758, Note_on_c, 0, 58, 100
1, 1248, Note_on_c, 0, 79, 100
1, 1739, Note_on_c, 0, 52, 100
Run Code Online (Sandbox Code Playgroud)

输入2.txt

1, 368, Note_off_c, 0, 67, 127
1, 936, Note_off_c, 0, 58, 127
1, 1415, Note_off_c, 0, 79, 127
1, 1917, Note_off_c, 0, 52, 127
Run Code Online (Sandbox Code Playgroud)

并需要组合这些文本文件来创建以下输出

1, 267, Note_on_c, 0, 67, 100
1, 368, Note_off_c, 0, 67, 127
1, 758, Note_on_c, 0, 58, 100
1, 936, Note_off_c, 0, 58, 127
1, 1248, Note_on_c, 0, 79, 100
1, 1415, Note_off_c, 0, 79, 127
1, 1739, Note_on_c, 0, 52, 100
1, 1917, Note_off_c, 0, 52, 127
Run Code Online (Sandbox Code Playgroud)

所以我希望将这些文件合并到单词 weave 的真实位置

Cyr*_*rus 5

使用 GNUsedR命令:

sed 'R input2.txt' input1.txt
Run Code Online (Sandbox Code Playgroud)

输出:

1, 267, Note_c, 0, 67, 100
1, 368, Note_off_c, 0, 67, 127
1, 758, Note_on_c, 0, 58, 100
1, 936, Note_off_c, 0, 58, 127
1, 1248, Note_on_c, 0, 79, 100
1, 1415, Note_off_c, 0, 79, 127
1, 1739, Note_on_c, 0, 52, 100
1, 1917, Note_off_c, 0, 52, 127

man sed

R filename:追加从文件名读取的行。该命令的每次调用都会从文件中读取一行。这是一个 GNU 扩展。


pmf*_*pmf 5

另一种选择是使用paste换行符作为分隔符

paste -d '\n' input1.txt input2.txt
Run Code Online (Sandbox Code Playgroud)
1, 267, Note_on_c, 0, 67, 100
1, 368, Note_off_c, 0, 67, 127
1, 758, Note_on_c, 0, 58, 100
1, 936, Note_off_c, 0, 58, 127
1, 1248, Note_on_c, 0, 79, 100
1, 1415, Note_off_c, 0, 79, 127
1, 1739, Note_on_c, 0, 52, 100
1, 1917, Note_off_c, 0, 52, 127
Run Code Online (Sandbox Code Playgroud)

man paste

写入由每个 FILE 中顺序对应的行组成的行