(nginx 구성) 파일에서 4줄 섹션의 주석 처리를 제거하려고 합니다. 사용 sed
. 처음에 grep을 사용해 보았는데 정규식이 올바른 것 같았습니다.
$ grep ^#.*bny /etc/nginx/sites-enabled/default
# location /bny {
#
그러나 sed를 사용하여 줄의 시작 부분을 삭제하려고 하면 실패합니다.
$ sudo sed -i '/^#.*bny/,+3 s/^#+//' /etc/nginx/sites-enabled/default
$ grep ^#.*bny /etc/nginx/sites-enabled/default
# location /bny {
나는 같은 전략을 사용하여 sed를 사용하여 해당 섹션에 주석을 달았으며 잘 작동했다고 생각합니다.
sudo sed -i '/bny/,+3 s/^/#/' /etc/nginx/sites-enabled/default
이중 댓글도 문제가 되지 않습니다. 내가 뭘 잘못하고 있는 걸까요?
답변1
+
BRE(기본 정규 표현식) 구문에서는 리터럴이므로 대체 패턴이 일치할 수 없습니다.
s/^##*//
, 또는 (GNU sed에서) 을 사용하거나 s/^#\{1,\}//
또는 명령줄 옵션을 사용하여 s/^#\+//
확장 정규식(ERE)으로 전환할 수 있습니다.-E
-r