我有一个函数输出许多行,我想在列中格式化.问题是任何特定的"单元格"(如果我可能使用该术语)的数据的宽度是可变的,所以将它管道化为像awk这样的东西并没有给我我想要的东西.
功能是"键"(不重要),我正在尝试这样的事情:
$ keys | awk '{ print $1"\t\t" $2 }'
Run Code Online (Sandbox Code Playgroud)
但是输出(它的一个片段,就是这样)看起来像这样:
"option-y" yank-pop
"option-z" execute-last-named-cmd
"option-|" vi-goto-column
"option-~" _bash_complete-word
"option-control-?" backward-kill-word
"control-_" undo
"control-?" backward-delete-char
Run Code Online (Sandbox Code Playgroud)
我怎么能强迫东西留在整洁的柱子里呢?这是可能的awk,还是我需要使用其他东西?
Ign*_*ams 77
column(1) 是你的朋友.
$ column -t <<< '"option-y" yank-pop
> "option-z" execute-last-named-cmd
> "option-|" vi-goto-column
> "option-~" _bash_complete-word
> "option-control-?" backward-kill-word
> "control-_" undo
> "control-?" backward-delete-char
> '
"option-y" yank-pop
"option-z" execute-last-named-cmd
"option-|" vi-goto-column
"option-~" _bash_complete-word
"option-control-?" backward-kill-word
"control-_" undo
"control-?" backward-delete-char
Run Code Online (Sandbox Code Playgroud)
Kot*_*lar 40
通过搜索"linux output formatted columns"找到了这个.
http://www.unix.com/shell-programming-scripting/117543-formatting-output-columns.html
根据您的需求,它就像:
awk '{ printf "%-20s %-40s\n", $1, $2}'
Run Code Online (Sandbox Code Playgroud)