Bash打印数组元素字符并排垂直

时间:2014-12-10 21:35:39

标签: arrays bash printing printf echo

我有一个数组,我想垂直打印,但也可以并排打印。 实施例

我有一个包含这些元素的数组,如下所示,用空格分隔,元素中的每个字符用逗号分隔: 0,1,2 3,4,5 6,7,8

我希望它输出:

036
147
258

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

ary=(0,1,2   3,4,5   6,7,8)
pr -T -"${#ary[@]}" < <(IFS=,; echo "${ary[*]}" | tr , '\n') | tr -d '[:blank:]'

打印

036
147
258

注意:

  • < <(...)语法是process substitution
  • 的重定向(第一个<
  • 进程替换中的位打印用逗号连接的数组元素,然后将逗号转换为换行符
  • 流程替换的输出(一列数字)被重定向到pr
  • pr是一个将输出列强制转换为列的便捷工具。
  • -"${#ary[@]}"选项告诉pr使用与数组元素相同的列数。
  • pr的输出发送到第二个tr,删除任何水平空格。

如果你想要逗号,将第二个tr更改为:tr -s '[:blank:]' , ,请使用:

pr -T -s, -"${#ary[@]}" < <(IFS=,; echo "${ary[*]}" | tr , '\n')