2

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

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

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

感谢您的评论。非常感谢您的帮助!

4

3 回答 3

5

将您的输出通过管道传输到列:

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

于 2012-06-13T02:50:09.757 回答
2

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

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

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

于 2012-06-13T03:05:37.107 回答
2

您可以使用sed

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

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

于 2012-06-13T03:08:22.603 回答