检测我的 sed 命令中的错误

检测我的 sed 命令中的错误

我正在创建一个命令来替换所有实例; 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'

相关内容