如何在AWK中转义所有非字母数字字符?

时间:2019-04-26 03:52:58

标签: string awk escaping

我继承了一个非常大的AWK脚本,该脚本与.csv文件匹配,并且发现它与某些字母数字字符(尤其是+ ( ))不匹配。

虽然我意识到这在sed中很容易:

sed 's/\([^A-z0-9]\)/\\\1/g'

我似乎找不到在AWK中以相同方式调用匹配字符的方法。

例如,示例输入为:

select.awk 'Patient data +(B/U)'

我想转义非字母数字字符,并将行变成:

Patient\ data\ \+\(B\/U\)

我已经看到有些人也传递非常晦涩的非字母数字字符,我想逃避。

2 个答案:

答案 0 :(得分:4)

gsub(/[^[:alnum:]]/, "\\\\&", arg)

答案 1 :(得分:0)

gnu变体具有更多功能,

awk '{n=gensub(/[^[:alnum:]]/,"\\\\&","g"); print n}' d.csv