我想用 ' ' 替换所有符号,如 '.'、'-'、'/' 等
我试过sed 's/[[!:alnum:]]/ /g' example.txt
但它不起作用
而对于sed 's/[,;\.\-\/()_]/ /g' example.txt
,我发现我无法将 '-' 替换为 ' '。
有什么办法吗?
我想用 ' ' 替换所有符号,如 '.'、'-'、'/' 等
我试过sed 's/[[!:alnum:]]/ /g' example.txt
但它不起作用
而对于sed 's/[,;\.\-\/()_]/ /g' example.txt
,我发现我无法将 '-' 替换为 ' '。
有什么办法吗?
要匹配所有非字母数字,请使用
[^[:alnum:]]
. 它类似于[^abc]
:前导插入符号使括号表达式匹配除列出的字符之外的所有字符。要匹配文字破折号,您需要确保它不会被解释为创建要匹配的字符列表。使其成为括号表达式的第一个字符:
[-,.;/()_]
.请注意,如果它在括号表达式内,sed 不会将其
/
作为分隔符s///
,因此无需在其前面放置反斜杠。(反斜杠会自己匹配。)例如echo 'a\b/c' | sed 's/[/\]/./g'
printsa.b.c
。有关正则表达式语法的描述,请参见例如
regex(7)
手册页。(请注意,它主要讨论sed -E
在许多/大多数 sed 中使用的扩展正则表达式(ERE)。)