如何使用bash脚本并排打印两个数组?

时间:2013-05-12 18:17:17

标签: arrays bash printing awk echo

我无法在google上找到这个问题的简单答案,也不会在stackoverflow上找到答案。

基本上我有两个阵列需要并排打印到终端,因为一个数组是术语列表,另一个是术语定义。有谁知道这样做的好方法?

提前致谢。

2 个答案:

答案 0 :(得分:8)

这是一个“单行”:

paste <(printf "%s\n" "${terms[@]}") <(printf "%s\n" "${defs[@]}")

这将创建由一个术语和一个由制表符分隔的def组成的行,严格来说,这可能不是“并排”(因为它们实际上不在列中)。如果你知道第一列应该有多宽,你可以使用类似的东西:

paste -d' ' <(printf "%-12.12s\n" "${terms[@]}") <(printf "%s\n" "${defs[@]}")

将术语精确填充或截断为12个字符,然后在两列之间放置一个空格而不是标签(-d' ')。

答案 1 :(得分:7)

假设两个数组的长度相同,您可以使用C风格的for循环来实现此目的:

for ((i=0; i<=${#arr1[@]}; i++)); do
    printf '%s %s\n' "${arr1[i]}" "${arr2[i]}"
done