实施例: 我有以下测试脚本
#!/bin/bash
output1=$(cat ~/Desktop/scripts/test)
output2=$(cat ~/Desktop/scripts/test2 |sed -e 's/^/\t/g')
echo -e "$output1 $output2"
当我执行上面的脚本时,我的输出低于输出
1234
5678
9123 ndfkjdskjgbsd
sdnbfksdjgkjdsb
sdnbvksd
dbvksdbgf
但我看下面的输出,我怎么能实现?
1234 ndfkjdskjgbsd
5678 sdnbfksdjgkjdsb
9123 sdnbvksd
dbvksdbgf
答案 0 :(得分:2)
使用paste
:
paste ~/Desktop/scripts/test ~/Desktop/scripts/test2
但是,如果确实希望在本机shell中执行此操作:
while IFS= read -r line1 <&3; IFS= read -r line2 <&4; [[ $line1 || $line2 ]]; do
printf '%s\t%s\n' "$line1" "$line2"
done 3<~/Desktop/script/test 4<~/Desktop/script/test2
这可以通过打开FD 3上的第一个文件,FD 4上的第二个文件,逐行处理这两个文件,直到没有新内容可用。