パターンが単語全体と一致する場合にのみパターンを置き換える [重複]

パターンが単語全体と一致する場合にのみパターンを置き換える [重複]

次のようなものに置き換えようとしているとしましょう。

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

すべての「クリーン」クリックを「OK」に置き換える方法はありますか? / gを試しましたが、すべてが正常で、s/\ Hit\ /OK/g改行クリックが消えました。

ベストアンサー1

はい。

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

\<単語の先頭で長さゼロの単語境界を一致させ、単語の\>終わりでも同じことを行います。

これ長さが0です\<\>文字自体と一致しませんが、単語境界では隣接するパターンが一致するように強制するという意味です。

単語の境界英数字 英数字以外の文字に隣接する文字列の点。たとえば、文字列の(スペース)とブランチ(他のブランク)の間の点、または改行文字の間との間の点が続きます。Hサンプルデータの3行すべてにあります。t␣Hit␣t

GNUの場合、sedandの代わりに使用できます\b(andも理解していますが)。\<\>\<\>

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

...しかし、BSDはsed理解していません\b

おすすめ記事