输出列格式排序linux

时间:2012-06-13 02:48:00

标签: linux sorting text-files file-manipulation textedit

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

如果不可能,我想我必须使用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,:;等)是相同的。这意味着,在原始文件中,如果我有制表符分隔字段,我的排序文件也将以制表符分隔。

最后一点,“正确”的答案并不是解决问题的正确方法。我不知道我是否可以对自己的帖子发表评论并将其标记为正确。如果可以,请告诉我。

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

3 个答案:

答案 0 :(得分:4)

将输出传输到列:

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

答案 1 :(得分:2)

您可以使用sed

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

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

答案 2 :(得分:1)

根据我的理解,文件已经排序,你想要的是用TAB字符替换两个分隔空格,在这种情况下,使用以下内容:

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

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