繁体   English   中英

输出列格式排序linux

[英]Output columns format sort linux

基本上,排序之后,我希望各列之间用制表符分隔。 现在,它被两个空格隔开。 手册页没有任何与输出格式相关的内容(至少我没有注意到)。

如果不可能,我想我必须使用awk进行排序和打印。 还有更好的选择吗?

编辑:为了澄清这个问题,双空格的位置不一致。 我实际上有这样的数据:

<date>\\t<user>\\t<message>

我按年,月,日和时间的日期排序,看起来像

Wed Jan 11 23:44:30 CST 2012

然后获得排序数据的输出,例如原始文件

<date>\\t<user>\\t<message>

编辑2:好像我测试选项卡是错误的。 我将原始行从bash复制粘贴到Windows框中。 这就是为什么它不能识别为选项卡,而是显示空格的原因。 我将整个文件下载到Windows,现在我可以看到字段之间用制表符分隔。

另外,我发现排序后新文件中的字段分隔(\\ t \\ n,:;等)是相同的。 这就是说,在原始文件中,如果我具有制表符分隔字段,则排序后的文件也将被制表符分隔。

最后一件事,“正确”的答案并不是对问题的正确解决方案。 我不知道我是否可以在自己的线程上发表评论并将其标记为正确。 如果可以的话,请告诉我。

谢谢你的评论。 真的很感谢你的帮助!

将输出通过管道传递到列:

sort <whatever> | column -t -s\\t

您可以使用sed

 sort data.txt  | sed 's/  /\t/g'
                         ^^
                         ||
                      2 blank spaces

这将获取排序操作的输出,并将单个选项卡替换为2个连续的空白。

据我了解,该文件已经排序,您想要的是用TAB字符替换两个分隔的空格,在这种情况下,请使用以下命令:

sed 's/ /\\t/g' < sorted_file > new_formatted_file

(请注意正确复制/粘贴正则表达式中的两个空格)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM