如果我有:
<Directory />
words
allow
bus
</Directory>
是否有一个正则表达式可以用其他东西替换allow并保持其他单词和块完整?
所以它应该看起来像:
<Directory />
words
not
bus
</Directory>
或者
<Directory />
words
bus
</Directory>
因为我会把这个词替换成别的东西或者把它去掉。我尝试过这样的正则表达式:
(<Directory />(\s|\w|\n)+)allow((\s|\n|\w)+</Directory>)
并将其替换为\1\n not \2
,但它替换了allow并删除了我不想要的块的后半部分。
那么是否有一个正则表达式可以替换块中的单词并保持块完整?
答案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>