如何取消转义文本文件?
How to unescape a text file?
我有一个文件 log.txt
,内容如下:
systemd[1]: Starting dracut cmdline hook...\r\n[ 8.759274] systemd[1]:
当我执行 cat log.txt
输出时:
systemd[1]: Starting dracut cmdline hook...\r\n[ 8.759274] systemd[1]:
预期输出为 2 行(\r\n
将替换为明显的新行):
systemd[1]: Starting dracut cmdline hook...
[ 8.759274] systemd[1]:
如何在 bash 终端中实现这一点?
您可以使用 echo -e
:
echo -e $(<log.txt)
无需任何外部命令,您可以使用 printf '%b\n'
而不是 cat
:
printf '%b\n' "$(<log.txt)"
systemd[1]: Starting dracut cmdline hook...
[ 8.759274] systemd[1]:
%b
扩展相应参数中的反斜杠转义序列
$(<log.txt)
是 bash 获取 log.txt
内容的指令
你也可以使用sed:
$ cat log.txt | sed -e 's/\n/\n/' -e 's/\r//'
如果这不起作用,请尝试
$ cat log.txt | sed -e 's/\r//' -e 's/\n/\
/'
即在最后一个反斜杠后按回车键,完成下一行的命令。
我有一个文件 log.txt
,内容如下:
systemd[1]: Starting dracut cmdline hook...\r\n[ 8.759274] systemd[1]:
当我执行 cat log.txt
输出时:
systemd[1]: Starting dracut cmdline hook...\r\n[ 8.759274] systemd[1]:
预期输出为 2 行(\r\n
将替换为明显的新行):
systemd[1]: Starting dracut cmdline hook...
[ 8.759274] systemd[1]:
如何在 bash 终端中实现这一点?
您可以使用 echo -e
:
echo -e $(<log.txt)
无需任何外部命令,您可以使用 printf '%b\n'
而不是 cat
:
printf '%b\n' "$(<log.txt)"
systemd[1]: Starting dracut cmdline hook...
[ 8.759274] systemd[1]:
%b
扩展相应参数中的反斜杠转义序列$(<log.txt)
是 bash 获取log.txt
内容的指令
你也可以使用sed:
$ cat log.txt | sed -e 's/\n/\n/' -e 's/\r//'
如果这不起作用,请尝试
$ cat log.txt | sed -e 's/\r//' -e 's/\n/\
/'
即在最后一个反斜杠后按回车键,完成下一行的命令。