无论是在谷歌还是在stackoverflow上,我都找不到这个问题的好而简单的答案。
基本上我有两个数组需要并排打印到终端,因为一个数组是术语列表,另一个是术语的定义。有谁知道这样做的好方法?
提前致谢。
这是一个“单行”:
paste <(printf "%s\n" "${terms[@]}") <(printf "%s\n" "${defs[@]}")
这将创建由一个选项卡分隔的术语和定义组成的行,严格来说,这可能不是“并排”的(因为它们实际上并不在列中)。如果您知道第一列应该有多宽,您可以使用以下内容:
paste -d' ' <(printf "%-12.12s\n" "${terms[@]}") <(printf "%s\n" "${defs[@]}")
这会将术语完全填充或截断为 12 个字符,然后在两列之间放置一个空格而不是制表符 ( -d' '
)。
您可以使用 C 风格的 for 循环来完成此操作,假设两个数组的长度相同:
for ((i=0; i<=${#arr1[@]}; i++)); do
printf '%s %s\n' "${arr1[i]}" "${arr2[i]}"
done