需要在 awk 脚本中编写一个函数来转义包含正则表达式运算符的字符串。
我找到了这个“丑陋”的解决方案:
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;
}
有更好的想法吗?
match($0,regexp)
),而不是在字符串操作中按原样使用它们(例如index($0,string)
)。 - Ed Mortonawk
脚本:http://pastebin.com/AwHmHS74 来处理这类文件。我正在搜索字符串recording made when T.M.A-1 greeted
- http://pastebin.com/sMDQxfcE - 在这种情况下,普通的字符串操作无法解决问题。 - Lacobus