我们说我有两个变量 foo 和 bar 包含相同数量的换行符分隔字符串,例如
$ echo $foo
a
b
c
$ echo $bar
x
y
z
合并 foo 和 bar 以获取下方输出的最简单方法是什么?
a x
b y
c z
如果 foo 和 bar 是文件,我可以paste -d ' ' foo bar
,但在这种情况下,它们是字符串。
答案 0 :(得分:0)
您可以在Bash中使用进程替换来执行此操作(不符合POSIX):
foo=$'a\nb\nc'
bar=$'x\ny\nz'
paste -d ' ' <(printf '%s\n' "$foo") <(printf '%s\n' "$bar")
输出:
a x
b y
c z
符合sh标准的方式似乎有点令人费解:
foo=$'a\nb\nc'
bar=$'x\ny\nz'
res=$(while IFS=$'\n' read -u 3 -r f1 && IFS=$'\n' read -u 4 -r f2; do
printf '%s' "$f1"
printf ' %s\n' "$f2"
done 3<<<"$foo" 4<<<"$bar"
)