特定のコンテキストに基づいてシェルで文字列を置き換える

特定のコンテキストに基づいてシェルで文字列を置き換える

sed / grepを使用してファイル内の文字列を置き換えたいのですが、文字列は他の文字列と混在しています。

例:

sed -i 's/php/vinu/g' test.yml  # to replace string php with vinu

テスト.yml

php
phpehealth
dophp
testingphpin

上記のymlファイルには複数の「php」文字列が含まれていますが、「php」文字列を「vinu」に置き換え、残りは触れないでください。

予想出力:

vinu
phpehealth
dophp
testingphpin

ベストアンサー1

あなたのsedバージョンがそれをサポートしている場合は、正規表現で単語の境界を使用してください。

sed -i 's/\<php\>/vinu/g' 

おすすめ記事