可以说我尝试像这样替换
asdasdasdHit Hitasdasd Hit Hit
Hitasda Hit Hit asdaHit Hit Hit
Hit Hitasda Hit
...
...
Run Code Online (Sandbox Code Playgroud)
有没有办法让每个“干净”的 Hit 替换为 OK?我试过 /g 但后来一切都好s/\ Hit\ /OK/g
起来了,换行符上的命中会丢失。
Kus*_*nda 14
是的。
$ sed 's/\<Hit\>/OK/g' file
asdasdasdHit Hitasdasd OK OK
Hitasda OK OK asdaHit OK OK
OK Hitasda OK
...
...
Run Code Online (Sandbox Code Playgroud)
该\<
会在单词的开头匹配零长度字边界,并且\>
将这样做在一个单词的结尾。
在零长度岬的\<
,并\>
意味着他们不会在自己的和匹配任何字符,但力量毗邻模式来匹配一个字边界上。
甲字边界是在一个字符串的点处的字母数字字符是邻近于非字母数字字符,例如之间的点?
(一个空格)和H
之间的点t
和?
在字符串中(另一个空间)?Hit?
,或在之间的点t
以及示例数据中所有三行的紧随其后的换行符。
使用 GNU,sed
您可以\b
代替\<
and \>
(尽管它也理解\<
and \>
):
$ sed 's/\bHit\b/OK/g' file
Run Code Online (Sandbox Code Playgroud)
...但BSDsed
不明白\b
。