sedは一部の文字正規表現のみを置き換えます。

sedは一部の文字正規表現のみを置き換えます。

私はsedと正規表現を練習しており、以下のファイルから「cheer」のすべてのインスタンスをlalalandに置き換えようとしています。ただし、応援のようなものは除外してください。

ubuntu@ip-172-31-58-40:~$ cat test
cheer
cheering
.
word
cheerytree
acheerytree

ubuntu@ip-172-31-58-40:~$ sed -i "s/cheer[^ing]/lalaland/g" test
ubuntu@ip-172-31-58-40:~$ cat te
cat: te: No such file or directory
ubuntu@ip-172-31-58-40:~$ cat test
cheer
cheering
.
word
lalalandtree
alalalandtree

なぜ最初のアイテム「Cheers」が抜けたのか分かりません。

ありがとう

ベストアンサー1

このパターンはあなたが思うものとは異なります。つまり、またはで[^ing]なければならない文字と一致します。ing

あなたの質問を「返信のインスタンスを完全な単語に置き換える」に置き換えると、単語の境界マークを使用して次のことができます\b

sed 's/\bcheer\b/lalaland/g'

おすすめ記事