Regex sed替换单词的精确匹配

Regex sed替换单词的精确匹配,regex,replace,sed,match,word,Regex,Replace,Sed,Match,Word,我遇到一种情况,我必须替换字符串中完全相同的单词。例如: 字符串:Dog Dog CatDog CatDog CatDog Cdog ratdog Dog Dog 我尝试了以下命令,但不起作用,我使用AIX: echo "Dog DogCat CatDog Dog Cat Cdog ratdog Dog dog " | sed -i 's/"\<Dog\>"/[[:blank:]]/' echo“Dog doggat CatDog CatDog Cdog ratdog Dog

我遇到一种情况,我必须替换字符串中完全相同的单词。例如:

字符串:
Dog Dog CatDog CatDog CatDog Cdog ratdog Dog Dog

我尝试了以下命令,但不起作用,我使用AIX:

echo "Dog DogCat CatDog Dog Cat Cdog ratdog Dog dog " | sed  -i 's/"\<Dog\>"/[[:blank:]]/' 
echo“Dog doggat CatDog CatDog Cdog ratdog Dog Dog”| sed-i的/“\”/[:blank:][
预期输出:
DogCat猫ratdog猫猫ratdog

请帮帮我


-汉曼特你知道吗?在那里你可以直接测试你的正则表达式字符串。。。尝试将[blank]替换为/[:space:][]+/

首先,
sed-i“script”文件只有在使用GNU时才起作用。您真的在AIX上安装了GNU sed吗?我对此表示怀疑。另外,
-i
在这种情况下也没有任何意义。您正在修改来自管道而不是文件的流

其次,POSIX没有指定
\
,尽管我知道至少GNU sed和Solaris sed接受它们。另一方面,使用
[[[::]]
来匹配相同的值

如果AIX上的
sed
接受
\
分别匹配单词的开头和结尾,并且它符合POSIX,那么这可能会满足您的要求:

echo "Dog DogCat CatDog Dog Cat Cdog ratdog Dog dog " | sed 's/\<[Dd]og\>//g'

“Cdog”到哪里去了?尝试删除双引号并使用文字空格作为替换。使用修饰语g(用于全球研究)和i(用于无案例研究)(将它们放在最后一个斜杠后)哇……这对我来说很有效,感谢我将在其中挖掘的站点引用。我知道我对regex有点弱。非常感谢Rento,你让我开心:)
echo ... | sed 's/ [Dd]og  */ /g; s/^[Dd]og  *//; s/ [Dd]og$//'