Substitution in text file **without** regular expressions
When you don't need the power of regular expressions, don't use it. That is fine.
But, this is not really a regular expression.
sed 's|literal_pattern|replacement_string|g'
So, if /
is your problem, use |
and you don't need to escape the former.
PS: About the comments, also see this Stackoverflow answer on Escape a string for sed search pattern.
Update: If you are fine using Perl try it with \Q
and \E
like this,
perl -pe 's|\Qliteral_pattern\E|replacement_string|g'
@RedGrittyBrick has also suggested a similar trick with stronger Perl syntax in a comment here or here
export FIND='find this'
export REPLACE='replace with this'
ruby -p -i -e "gsub(ENV['FIND'], ENV['REPLACE'])" path/to/file
This is the only 100% safe solution here, because:
- It's a static substition, not a regexp, no need to escape anything (thus, superior to using
sed
) - It won't break if your string contains
}
char (thus, superior to a submitted Perl solution) - It won't break with any character, because
ENV['FIND']
is used, not$FIND
. With$FIND
or your text inlined in Ruby code, you could hit a syntax error if your string contained an unescaped'
.