如何使用 Bash 合并两个文件中的值

如何使用 Bash 合并两个文件中的值

我有两个文件:

文本1:

1 element
2 element
3 element
4 element

文本2:

line1
line2
line3
line4
line5
line6
line7

我需要得到这个结果:

1 element at line1
2 element at line2
3 element at line3
4 element at line4
1 element at line5
2 element at line6
3 element at line7

如果我在文本 1 中添加五行,预期结果如下:

1 element at line1
2 element at line2
3 element at line3
4 element at line4
5 element at line5
1 element at line6
2 element at line7

答案1

paste -d '' <(while cat text1; do :; done) <(yes ' at ') text2 | head -n "$(<text2 wc -l)"

while cat text1; do :; done重复 的内容text1yes ' at '生成行,每行at(带有相邻的空格)。paste将两行合并,并text2加上一个空分隔符。

paste一直工作到全部输入文件已耗尽。while …并且可以无休止地流式传输,即使已耗尽yes,它们也会继续。因此,我们需要接受与已完全相同的行数。这就是所做的。pastefile2text2head

该方法假设这两个文件都是静态的。

相关内容