我想输出表格格式文本。我试图做的是用 '\t' 回显数组的元素,但它没有对齐。
我的代码
for((i=0;i<array_size;i++));
do
echo stringarray[$i] $'\t' numberarray[$i] $'\t' anotherfieldarray[$i]
done;
我的输出
a very long string.......... 112232432 anotherfield
a smaller string 123124343 anotherfield
期望输出
a very long string.......... 112232432 anotherfield
a smaller string 123124343 anotherfield
最佳答案
printf
很棒,但人们忘记了它。
$ for num in 1 10 100 1000 10000 100000 1000000; do printf "%10s %s\n" $num "foobar"; done
1 foobar
10 foobar
100 foobar
1000 foobar
10000 foobar
100000 foobar
1000000 foobar
$ for((i=0;i<array_size;i++));
do
printf "%10s %10d %10s" stringarray[$i] numberarray[$i] anotherfieldarray[%i]
done
注意我使用
%10s
作为字符串。 %s
是重要的部分。它告诉它使用一个字符串。中间的 10
表示它是多少列。 %d
用于数字(数字)。man 1 printf
了解更多信息。关于bash - 如何在 Bash 中对齐表格的列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12768907/