
私が持っているなら:
<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
ことを保護します(たとえば、.文字列を含む行を削除するには、次のコマンドを使用することもできます。allow
not
allow
sed
$ sed '/\ballow\b/d' afile
<Directory />
words
bus
</Directory>