I wanted to display a long list of strings from an array.
Right now, my script run through a for loop echoing each value to the standard output:
for value in ${values[@]}
do
echo $value
done
Yeah, that's pretty ugly! And the one column listing is pretty long too...
I was wondering if i can find a command or builtin helping me to display all those values in columns, like the ls command does by default when listing a directory (ls -C).
[Update]
Losing my brain with column not displaying properly formatted columns, here's more info:
The values:
$ values=( 01----7 02----7 03-----8 04----7 05-----8 06-----8 07-----8 08-----8 09---6 10----7 11----7 12----7 13----7 14-----8 15-----8 16----7 17----7 18---6 19-----8 20-----8 21-----8)
Notice the first two digits as an index and the last one indicating the string length for readability.
The command: echo " ${values[@]/%/$'\n'}" | column
The result: bad columns http://tychostudios.ch/multipurpose/bad_columns.png
Something is going wrong...
columnseems to be struggling with the facts that your input has one column and some rows are narrower than a tab-stop.echo " ${values[@]/%/$' \n'}" | columnseems to work\nto make it work with that set of data. But cuuriously, the output is on 3 columns only. Although there is plenty room for 5 columns.\n!echo " ${values[@]/%/$' \n'}" | column -c 120provides five columns for me.