Linux 如何在保存到文件之前解释流中的ASCII命令代码?
我正在将标准输出流保存到文件:Linux 如何在保存到文件之前解释流中的ASCII命令代码?,linux,bash,Linux,Bash,我正在将标准输出流保存到文件: mvn test > output.txt 在保存到文件之前,我希望正确处理ASCII命令代码(尤其是0x0D和0x08),以使文件更具可读性 例如,在第1行\r第2行\n中,\r应将该位置移动到同一行的开头,以便从那里进行覆盖,从而保存第2行\n。类似地,barbar\rfoo\n应该以foobar\n结尾 Linux中是否存在这样的工具,还是我必须从头开始编写一些东西?通过col-b管道输出。它不理解所有可能的控制字符和转义序列,但至少它知道回车和退格
mvn test > output.txt
在保存到文件之前,我希望正确处理ASCII命令代码(尤其是0x0D
和0x08
),以使文件更具可读性
例如,在第1行\r第2行\n
中,\r
应将该位置移动到同一行的开头,以便从那里进行覆盖,从而保存第2行\n
。类似地,barbar\rfoo\n
应该以foobar\n
结尾
Linux中是否存在这样的工具,还是我必须从头开始编写一些东西?通过
col-b
管道输出。它不理解所有可能的控制字符和转义序列,但至少它知道回车和退格。如果它的输入被打印到终端上,它将输出在最后可见的内容。(具有破坏性退格的无限高终端)U+000D不是命令代码。这是一条新路线。更具体地说,是回车。确切地说,这就是为什么它必须像回车一样进行预处理的原因阅读精细手册:man sed,沿着sed's/*\r/'
以较少的篇幅读取文件,这将转换讨厌的ascii命令代码(Maven无论如何都不应该输出它们,除非你有一个错误的插件)我想提醒您,在某些系统上,l、U+000D(\r
)是新行。echo'line 1\rline 2\n'| col-b
似乎没有插入任何新行?至少在OSX上。我不需要插入新行,我需要按照预期解释ASCII代码<代码>\r不是一个新行,而是一个回车符,我说得很松散。至少在OSX上,echo'line 1\rline 2\n'| col-b
的输出是line 1\rline 2\n
(文字反斜杠,r
s和n
s)……我刚刚在Ubuntu 12.04上确认了同样的行为。你说的“解释”到底是什么意思?@phs有一个shell选项shopt-s xpg\u echo
或shopt-u xpg\u echo
。