我想用“”替换“.”、“-”、“/”等所有符号
我尝试过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)。)