Ant*_*ioK 2 command-line text-processing columns
假设我有一些 CLI one-liner,它输出一些带有空格分隔部分的文本行。这些部分在逻辑上应该是列,但由于文本宽度,它看起来并非如此。
我如何自动格式化这样的输出以使其成为漂亮的列?
例如,我有类似的输出
Alice param1 param2345 32768 50 16
Bob param2345 param1 512 10 1
_debug_user_ param0 param0 0 0 0
Run Code Online (Sandbox Code Playgroud)
我想让它像
Alice param1 param2345 32768 50 16
Bob param2345 param1 512 10 1
_debug_user_ param0 param0 0 0 0
Run Code Online (Sandbox Code Playgroud)
使用 Linux column(1):
column -t <file.txt
Run Code Online (Sandbox Code Playgroud)
使用 BSD rs(1):
rs 0 6 <file.txt
Run Code Online (Sandbox Code Playgroud)
与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
Run Code Online (Sandbox Code Playgroud)