【发布时间】:2026-01-16 23:20:02
【问题描述】:
无论是在谷歌上还是在 * 上,我都找不到这个问题的简单好答案。
基本上我有两个数组需要并排打印到终端中,因为一个数组是术语列表,另一个是术语的定义。有谁知道这样做的好方法吗?
提前致谢。
【问题讨论】:
-
使用关联数组?
标签: arrays bash printing awk echo
无论是在谷歌上还是在 * 上,我都找不到这个问题的简单好答案。
基本上我有两个数组需要并排打印到终端中,因为一个数组是术语列表,另一个是术语的定义。有谁知道这样做的好方法吗?
提前致谢。
【问题讨论】:
标签: arrays bash printing awk echo
这是一个“单行”:
paste <(printf "%s\n" "${terms[@]}") <(printf "%s\n" "${defs[@]}")
这将创建由一个 term 和一个由 tab 分隔的 def 组成的行,严格来说,这可能不是“并排”的(因为它们实际上并不在列中)。如果您知道第一列应该有多宽,您可以使用以下内容:
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
【讨论】:
i in "${!arr1[@]}"?