1. ホーム
  2. bash

[解決済み] Bashでテーブルの列を揃えるにはどうしたらいいですか?

2022-11-02 18:54:21

質問

表形式のテキストを出力したい。試したのは配列の要素を' \t' でechoすることですが、ずれてしまいます。

私のコード

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 をクリックすると詳細が表示されます。