将所有不属于字符和数字的项目替换为 ' '

将所有不属于字符和数字的项目替换为 ' '

我想用“”替换“.”、“-”、“/”等所有符号

我尝试过sed 's/[[!:alnum:]]/ /g' example.txt,但不起作用

对于sed 's/[,;\.\-\/()_]/ /g' example.txt,我发现我不能用 ' ' 代替 '-' 。

有什么办法可以做到这一点吗?

答案1

要匹配所有非字母数字,请使用[^[:alnum:]].它类似于[^abc]:前导插入符使括号表达式匹配除列出的字符之外的所有字符。

要匹配文字破折号,您需要确保它不会被解释为创建要匹配的字符列表。使其成为括号表达式的第一个字符:[-,.;/()_]

请注意,如果 sed 位于括号表达式内,则 sed 不会将其/作为分隔符s///,因此无需在其前面添加反斜杠。 (反斜杠将与其自身匹配。)例如echo 'a\b/c' | sed 's/[/\]/./g'打印a.b.c

例如,参见regex(7)手册页有关正则表达式语法的说明。 (请注意,它主要讨论sed -E许多/大多数 sed 中使用的扩展正则表达式 (ERE)。)

相关内容