CLI出力のサイズを素敵な列に調整する方法

CLI出力のサイズを素敵な列に調整する方法

スペースで区切られたセクションを含むいくつかのテキスト行を出力するCLIの1行のコマンドがあるとします。これらのセクションは論理的に列でなければなりませんが、テキストの幅のためには見えません。

この種の出力を良い列に自動フォーマットするにはどうすればよいですか?

たとえば、次のような出力があります。

Alice param1 param2345 32768 50 16
Bob param2345 param1 512 10 1
_debug_user_ param0 param0 0 0 0

欲しい

Alice        param1    param2345 32768 50 16
Bob          param2345 param1    512   10 1
_debug_user_ param0    param0    0     0  0

答え1

Linuxの使用column(1):

column -t <file.txt

BSDの使用rs(1):

rs 0 6 <file.txt

そしてawk(1)

awk 'FNR==NR { for(i=1; i<NF; i++) if(length($i)>w[i]) w[i]=length($i) }
     FNR!=NR { for(i=1; i<NF; i++) $i=sprintf("%-" (w[i]+1) "s", $i); print }' \
        file.txt file.txt

関連情報