将字符串合并为列以在 bash 中创建表

fuu*_*ind 0 bash merge

考虑以下字符串:

$ columnA="A1\nA2\nA3"
$ columnB="B1\nB2\nB3"
$ columnC="C1\nC2\nC3"
Run Code Online (Sandbox Code Playgroud)

使用 Bash,我如何合并这些以便获得另一个包含以下内容的字符串:

$ echo "$table"
A1;B1;C1\nA2;B2;C2\nA3;B3;C3
Run Code Online (Sandbox Code Playgroud)

Prv*_*dav 5

您可以使用 commandpaste和 process-substitution:

table="$(paste -d ';' <(echo -e "$columnA") <(echo -e "$columnB") <(echo -e "$columnC"))"
Run Code Online (Sandbox Code Playgroud)

echo "$table" 将输出为:

A1;B1;C1
A2;B2;C2
A3;B3;C3
Run Code Online (Sandbox Code Playgroud)

也不要忘记使用-eflag with echo,否则它不会考虑\n,尤其是你会得到输出:

A1\nA2\nA3;B1\nB2\nB3;C1\nC2\nC3
Run Code Online (Sandbox Code Playgroud)

或者,使用 printf:

table="$(paste -d ';' <(printf "$columnA") <(printf "$columnB") <(printf "$columnC"))"
Run Code Online (Sandbox Code Playgroud)