仅当模式匹配整个单词时才替换模式

仅当模式匹配整个单词时才替换模式

可以说我尝试用这样的方式替换

asdasdasdHit Hitasdasd Hit Hit
Hitasda Hit Hit asdaHit Hit Hit
Hit Hitasda Hit
...
...

有没有办法让每个“干净”的点击都替换为“OK”?我尝试了 /g 但后来一切都OK了,s/\ Hit\ /OK/g换行符上的点击丢失了。

答案1

是的。

$ sed 's/\<Hit\>/OK/g' file
asdasdasdHit Hitasdasd OK OK
Hitasda OK OK asdaHit OK OK
OK Hitasda OK
...
...

\<在单词开头匹配零长度单词边界,并\>在单词末尾执行相同操作。

零长度of\<\>意味着它们不会匹配任何字符本身,但会强制相邻模式在单词边界上匹配。

A字边界是字符串中字母数字字符与非字母数字字符相邻的点,例如字符串中的(一个空格) 和之间的点和H之间的点(另一个空格),或者紧邻 和之间的点在示例数据中的所有三行上都遵循换行符。t␣Hit␣t

对于 GNU,sed你可以使用and\b代替(尽管它也理解and ):\<\>\<\>

$ sed 's/\bHit\b/OK/g' file

...但 BSDsed不明白\b

相关内容