I have a plain text document, which I want to compile inside LaTeX. However, sometimes it has the characters, “#”, “$”, “%”, “&”, and “_”. To compile properly in LaTeX, I must first replace these characters with “#”, “\$”, “\%”, “\&”, and “_”. I have used this line in sed:
sed -i 's/\#/\\\#/g' ./file.txt
sed -i 's/\$/\\\$/g' ./file.txt
sed -i 's/\%/\\\%/g' ./file.txt
sed -i 's/\&/\\\&/g' ./file.txt
sed -i 's/\_/\\\_/g' ./file.txt
Is this correct?
Unfortunately, the file is too large to open in any GUI software, so checking if my sed line is correct with a text editor is difficult. I tried searching with grep, but the search does not work as expected (e.g. below, I searched for any lines containing “$”):
grep "\$" file.txt
- What is the best way to put “\” in front of these characters?
- How can I use
grepto successfully check the lines with the replacements?
You can do the replacement with a single call to
sed:The
&in the replacement text fills in for whichever single character is enclosed in parentheses. Note that since\is the LaTeX escape character, you’ll have to escape it as well in the original file.