我正在创建一个命令来替换所有实例; f.
。, (frequent).
所以我写下了sed -i 's:;[:space:]f.:,[:space:](frequent).:g'
没有任何变化,然后我写下了sed -i 's:; f.:, (frequent).:g'
只发现它替换了f
在 a 之后写入的所有实例;
,因此它变成; find
了, (frequent).ind
有人能告诉我我的错误以及如何改正吗?
答案1
第一种情况下的问题在于引用:如果要使用:
分隔符,则不能在字符空格中不加引号地使用它。此外,.
在正则表达式中具有特殊含义 - 它匹配任何字符。要匹配文字点,请使用\.
。此外,[:space:]
必须在字符类中使用,因此您应该使用[[:space:]]
。最后,字符类在表达式的替换部分中没有意义。
这应该有效:
sed 's/;[[:space:]]f\./, (frequent)./g'