Bash – How to escape double quotes in content gotten from file

bash

I am trying to escape double quotes when adding content from statusfile.log tostatusfile_truncated.log.

I have looked around and are just getting more confused. How would you achieve it?

This is what I got so far:

#!/bin/bash

statusfile="statusfile.log"
statusfile_truncated="statusfile_truncated.log"
tail -n 50 $statusfile >> $statusfile_truncated

Content of 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.

Content of statusfile_truncated.log should be:

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.

Best Answer

I you just want to insert a backslash in front of the double quote you could go with sed like this:

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

But if there is to be real escaping going on there is other tools and techniques that should be considered.