在awk中的正则表达式中删除除逗号以外的所有标点符号

时间:2019-02-01 13:08:58

标签: regex shell awk

我有一个变量

 local= "[ 'service center','New' ]"

我已经使用以下awk代码删除了方括号和单引号,

  local=gensub(/[\[\]']+/, "", "g", local);
  local=gensub(/[^,[:punct:][:space:]]/, "", "g", local);

预期的O / P是

local = "service center,New"

我编写的代码不起作用

1 个答案:

答案 0 :(得分:1)

原始问题:_如何选择除带有正则表达式的<逗号>以外的所有标点符号。

[:punct]定义为不是字母,数字,控制字符或空格字符的字符

[:punct] = [^[:alnum:][:cntrl:][:space:]]

因此,您想要的是不是字母,数字,控制字符,空格字符或<逗号>字符的字符。

[^[:alnum:][:cntrl:][:space:],]

编辑OP后:

以下应按要求执行:

gsub(/(^[^[:alnum:],]*|[^[:alnum:],[:blank:]]|[^[:alnum:],]*$)/, "", local)