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)
内置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。