Text-Processing

如何將 cli 輸出調整為漂亮的列

  • October 11, 2016

假設我有一些 CLI 單行,它輸出一些帶有空格分隔部分的文本行。這些部分在邏輯上應該是列,但由於文本寬度,它看起來不是這樣。

我怎樣才能自動格式化這樣的輸出以使其成為漂亮的列?

例如,我有類似的輸出

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

使用 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

引用自:https://unix.stackexchange.com/questions/315629