如何在Linux中制作'cat'来解释控制字符

Ale*_*lex 11 linux escaping echo cat

请考虑以下echo命令:

 echo -e "at\r"
Run Code Online (Sandbox Code Playgroud)

at在命令行上产生输出,即\ r \n特殊字符已被解释.我想用文件中的一些文本做同样的事情.假设完全相同的序列

at\r
Run Code Online (Sandbox Code Playgroud)

写入一个名为的文件at.txt,然后我想在终端上显示它.但

cat at.txt
Run Code Online (Sandbox Code Playgroud)

给出输出

at\r
Run Code Online (Sandbox Code Playgroud)

什么不是我想要的.我希望解释特殊序列\ r \n,而不仅仅是在终端上打印.有人有什么想法?

谢谢Alex

Ste*_*rol 11

为什么不:

while read -r line; do echo -e $line; done < at.txt
Run Code Online (Sandbox Code Playgroud)


Luc*_*mon 7

你可以简单地说:

echo -e $(cat at.txt)
Run Code Online (Sandbox Code Playgroud)

  • 不尊重换行符。 (3认同)

Kei*_*ith 3

内置echo命令解释常见的反斜杠转义。但在文件中,您必须以类似的方式解释或转换它。该sed程序可以做到这一点。

sed -e 's/\\r/\r/' < at.txt
Run Code Online (Sandbox Code Playgroud)

但我也在这里学到了一些东西。外部echo命令的行为与内部命令不同。

/bin/echo "\r"
Run Code Online (Sandbox Code Playgroud)

具有不同的输出

echo "\r"
Run Code Online (Sandbox Code Playgroud)

但基本上你需要一个过滤器将垃圾字符串转换\r为单字节 0x0D。