column -t
令人惊讶的是:如何更改列之间输出的空格数?我要一个。 column -t
给出两个。例如,
echo -en '111 22 3\n4 555 66\n' | column -t
输出
111 22 3
4 555 66
但我希望输出以下内容:
111 22 3
4 555 66
我想我可以通过sed正则表达式运行输出,将两个空格后跟一个单词边界转换为单个空格,但我想避免在混合中添加其他工具,除非必要。
连连呢?我可以使用简单的替换命令而不是column -t
来完成同样的事情吗?用awk玩OFS游戏似乎不是替代品。
答案 0 :(得分:2)
您无法更改column
的内置间距。这使您可以切换到不同的工具或后处理。您可以使用sed
以低成本完成梯形图,以在每个数字前删除单个空格:
echo -en '111 22 3\n4 555 66\n' | column -t | sed 's/ \([0-9]\)/\1/g'
输出:
111 22 3
4 555 66
答案 1 :(得分:0)
从column
切换到pr
可能是一个好主意。 pr
有更多用于控制输出格式的选项,并且还可以创建列...
例如:
echo -en '111 22 3\n4 555 66\n' | tr ' ' '\n' | pr -3aT -s' '
产生
111 22 3
4 555 66
不确定如何在减少空间的同时保持对齐,因此它并不完美。
tr
就在那里,因为pr
期望一行上的每个条目。
答案 2 :(得分:0)
我认为最简单的方法是使用tabs
。在您的输出中,您期望选项卡编号为5.因此,在终端类型中:tabs 5
。这会将标签宽度更改为5.
然后输入:
echo -en '111 22 3\n4 555 66\n' | tr ' ' '\t'
或:
echo -en '111\t22\t3\n4\t555\t66\n'
结果:
111 22 3
4 555 66
有关详细信息,请键入:man tabs