![如何使用 Bash 合并两个文件中的值](https://linux22.com/image/1606249/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20Bash%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E5%80%BC.png)
我有两个文件:
文本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
重复 的内容text1
。yes ' at '
生成行,每行at
(带有相邻的空格)。paste
将两行合并,并text2
加上一个空分隔符。
paste
一直工作到全部输入文件已耗尽。while …
并且可以无休止地流式传输,即使已耗尽yes
,它们也会继续。因此,我们需要接受与已完全相同的行数。这就是所做的。paste
file2
text2
head
该方法假设这两个文件都是静态的。