awk: function to escape regex operators from a string
awk, bash, gawk, regex
Solution
You can just use single `gsub` using a character class like this:
function escape_string( str ) {
gsub(/[\\.^$(){}\[\]|*+?]/, "\\\\&", str)
return str
}
`&` is back-reference to the matched string and `\\\\` is for escaping the match.
Problem
Need a function to escape a string containing regex expression operators in an awk script. I came across this 'ugly' solution: ``` function escape_string( str ) { gsub( /\\/, "\\\\", str ); gsub( /\./, "\\.", str ); gsub( /\^/, "\\^", str ); gsub( /\$/, "\\$", str ); gsub( /\*/, "\\*", str ); gsub( /\+/, "\\+", str ); gsub( /\?/, "\\?", str ); gsub( /\(/, "\\(", str ); gsub( /\)/, "\\)", str ); gsub( /\[/, "\\[", str ); gsub( /\]/, "\\]", str ); gsub( /\{/, "\\{", str ); gsub( /\}/, "\\}", str ); gsub( /\|/, "\\|", str ); return str; } ``` Any better ideas?