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

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

我有一个变量

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

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

 local=gensub(/[\[\]']+/, "", "g", local);

预期 O/P 为

local ="  service center,New  "

我写的代码不起作用

答案1

您可以用非标点符号替换逗号,删除所有剩余的标点符号,然后恢复逗号:

awk -v  local="[  'service center','New'  ]" '
  BEGIN {
    gsub(/,/, SUBSEP, local)
    gsub(/[[:punct:]]/, "", local)
    gsub(SUBSEP, ",", local)
    printf("local=\"%s\"\n", local)
  }'
local="  service center,New  "

在这里,我使用内置的 SUBSEP 变量,如GNU awk 手册因此:

的默认值SUBSEP是 string "\034",它包含不太可能出现在 awk 程序或大多数输入数据中的非打印字符

答案2

请找到下面的命令,它运行良好

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

sed "s/[^a-zA-Z,= \" ]//g"  filename
output: local= "  service center,New  "


Command:  sed "s/[^a-zA-Z,= \" ]//g" filename

相关内容