ファイルブロックの単語を置き換える正規表現?

ファイルブロックの単語を置き換える正規表現?

私が持っているなら:

<Directory />
 words
 allow
 bus
</Directory>

許可を別のものに置き換えて、他の単語やブロックをそのまま維持できる正規表現はありますか?

したがって、次のようにする必要があります。

<Directory />
 words
 not
 bus
</Directory>

または

<Directory />
 words
 bus
</Directory>

その言葉を他のものに変えたり減算したりするからだ。私は次のように正規表現を試しました。

(<Directory />(\s|\w|\n)+)allow((\s|\n|\w)+</Directory>)

それを交換しましたが、\1\n not \2許可を交換し、私が望んでいないブロックの2番目の半分を削除しました。

それでは、ブロックの単語を置き換えてブロックをそのまま維持できる正規表現はありますか?

ベストアンサー1

sedあなたが示したことを達成する簡単な方法であるあなたの特定の問題を完全に理解していません。

$ sed 's/\ballow\b/not/g' afile
<Directory />
 words
 not
 bus

単語を文字列にのみ置き換える\bことを保護します(たとえば、.文字列を含む行を削除するには、次のコマンドを使用することもできます。allownotallowsed

$ sed '/\ballow\b/d' afile
<Directory />
 words
 bus
</Directory>

おすすめ記事