만약 내가 가지고 있다면:
<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
허용을 교체하고 내가 원하지 않는 블록의 두 번째 절반을 제거했습니다.
그렇다면 블록의 단어를 대체하고 블록을 그대로 유지할 수 있는 정규식이 있습니까?
답변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>