我有列表/数组,例如$ PATH env变量,当你执行echo $PATH
打印时
/usr/local/bin /usr/bin /bin /usr/sbin /sbin /opt/X11/bin /usr/local/MacGPG2/bin /usr/texbin /usr/local/go/bin
我希望将其格式化为如下所示的列,因此不必向上滚动太多。 $PATH
变量只是一个示例,我希望能够使用任何列表。
/usr/local/bin /usr/sbin /usr/local/MacGPG2/bin
/usr/bin /sbin /usr/texbin
/bin /opt/X11/bin /usr/local/go/bin
我可以使用for循环打印新行中列表中的每个项目,但无法找到执行多列的方法。我知道有一个列命令,但似乎没有做任何事情。我尝试了echo $PATH | column -c 5
答案 0 :(得分:1)
在这里:传递变量名称以及您想要的列数
$ function columnize -a listvarname -a ncols
test (count $ncols) -eq 1; or set ncols 1
printf "%s\n" $$listvarname | \
eval paste (yes - | head -n $ncols | tr '\n' " ") | \
column -t
end
使用非特殊列表名称的演示。
$ set list /usr/local/bin /usr/bin /bin /usr/sbin /sbin /opt/X11/bin /usr/local/MacGPG2/bin /usr/texbin /usr/local/go/bin
$ columnize list 3
/usr/local/bin /usr/bin /bin
/usr/sbin /sbin /opt/X11/bin
/usr/local/MacGPG2/bin /usr/texbin /usr/local/go/bin
$ columnize list 5
/usr/local/bin /usr/bin /bin /usr/sbin /sbin
/opt/X11/bin /usr/local/MacGPG2/bin /usr/texbin /usr/local/go/bin
$ columnize list
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/opt/X11/bin
/usr/local/MacGPG2/bin
/usr/texbin
/usr/local/go/bin
答案 1 :(得分:0)
试试这个:
echo $PATH|sed 's/ /\
/g'|column -xt -c5
注意:在\确保后面有一个新行