mittu Asked: 2019-02-02 06:01:06 +0800 CST2019-02-02 06:01:06 +0800 CST 2019-02-02 06:01:06 +0800 CST 正则表达式删除正则表达式 awk 中除逗号之外的所有标点符号 772 我有一个变量 local= "[ 'service center','New' ]" 我使用以下 awk 代码删除了方括号和单引号, local=gensub(/[\[\]']+/, "", "g", local); 预期的 O/P 是 local =" service center,New " 我写的代码不起作用 shell awk 2 个回答 Voted Praveen Kumar BS 2019-02-02T10:07:28+08:002019-02-02T10:07:28+08:00 请找到下面的命令,它工作正常 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 Best Answer glenn jackman 2019-02-02T12:29:14+08:002019-02-02T12:29:14+08:00 您可以用非标点符号替换逗号,删除所有剩余的标点符号,然后恢复逗号: 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是字符串"\034",它包含一个不太可能出现在 awk 程序或大多数输入数据中的非打印字符
请找到下面的命令,它工作正常
您可以用非标点符号替换逗号,删除所有剩余的标点符号,然后恢复逗号:
在这里,我使用了内置的 SUBSEP 变量,因此在GNU awk 手册中进行了描述: