我继承了一个非常大的AWK脚本,该脚本与.csv文件匹配,并且发现它与某些字母数字字符(尤其是+ ( )
)不匹配。
虽然我意识到这在sed中很容易:
sed 's/\([^A-z0-9]\)/\\\1/g'
我似乎找不到在AWK中以相同方式调用匹配字符的方法。
例如,示例输入为:
select.awk 'Patient data +(B/U)'
我想转义非字母数字字符,并将行变成:
Patient\ data\ \+\(B\/U\)
我已经看到有些人也传递非常晦涩的非字母数字字符,我想逃避。
答案 0 :(得分:4)
gsub(/[^[:alnum:]]/, "\\\\&", arg)
答案 1 :(得分:0)
gnu变体具有更多功能,
awk '{n=gensub(/[^[:alnum:]]/,"\\\\&","g"); print n}' d.csv