我怎样才能从文件中获取内容的双引号

在将statusfile.log内容添加到statusfile_truncated.log时,我试图使用双引号。

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

这是我到目前为止:

 #!/bin/bash statusfile="statusfile.log" statusfile_truncated="statusfile_truncated.log" tail -n 50 $statusfile >> $statusfile_truncated 

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. 

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. 

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

 sed 's/"/\\"/g' $statusfile >> $statusfile_truncated 

但是,如果真的要逃避,还有其他的工具和技术应该被考虑。

bash引用string的最好方法是在printf使用%b选项。 这将处理所有特殊字符:

 $ variablename='foo "bar and C:\\foo\\bar' $ printf '%b\n' "$variablename" foo "bar and C:\foo\bar