我想输出表格格式文本。我试图做的是用 '\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/

10-13 05:12