2013-05-12 45 views
6

我找不到一个很好的和简单的回答这个问题既不谷歌也没有这里在stackoverflow。如何使用bash脚本并排打印两个数组?

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

在此先感谢。

+0

使用关联数组? – jordanm 2013-05-12 18:29:09

回答

6

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

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

这里有一个“一班轮”:

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

这将创建由一个由tab分隔的term和def组成的行,严格来说,它们可能不是“并排”(因为它们不是真正在列中)。如果你知道的第一列应该有多宽是,你可以使用类似:

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

将填充或截断条件为12个字符准确,然后把两列,而不是一个标签之间的空间( -d' ')。