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