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$//'