如何在从文件中获取的内容中转义双引号

Cud*_*dos 3 bash

statusfile.logto添加内容时,我试图转义双引号statusfile_truncated.log

我环顾四周,只是越来越困惑。你将如何实现它?

这是我到目前为止得到的:

#!/bin/bash

statusfile="statusfile.log"
statusfile_truncated="statusfile_truncated.log"
tail -n 50 $statusfile >> $statusfile_truncated
Run Code Online (Sandbox Code Playgroud)

statusfile.log 的内容:

2017-05-15 22:36:18 test.somedomain.com <--- 250 CWD successful. "/xxxxxxxxxxxxx" is current directory.
2017-05-15 22:36:18 test.somedomain.com <--- 250 CWD successful. "/xxxxxxxxxxxxx" is current directory.
2017-05-15 22:36:18 test.somedomain.com <--- 250 CWD successful. "/xxxxxxxxxxxxx" is current directory.
Run Code Online (Sandbox Code Playgroud)

statusfile_truncated.log 的内容应该是:

2017-05-15 22:36:18 test.somedomain.com <--- 250 CWD successful. \"/xxxxxxxxxxxxx\" is current directory.
2017-05-15 22:36:18 test.somedomain.com <--- 250 CWD successful. \"/xxxxxxxxxxxxx\" is current directory.
2017-05-15 22:36:18 test.somedomain.com <--- 250 CWD successful. \"/xxxxxxxxxxxxx\" is current directory.
Run Code Online (Sandbox Code Playgroud)

Ulf*_*lfR 8

我只想在双引号前面插入一个反斜杠,你可以sed这样使用:

sed 's/"/\\"/g' $statusfile >> $statusfile_truncated
Run Code Online (Sandbox Code Playgroud)

但是,如果要进行真正的逃避,则应考虑其他工具和技术。