개행 다음에 오는 특정 문자열을 제거하는 데 Perl 정규식이 작동하지 않는 이유는 무엇입니까?

개행 다음에 오는 특정 문자열을 제거하는 데 Perl 정규식이 작동하지 않는 이유는 무엇입니까?

다음과 같은 텍스트가 있습니다.

text
\centering
more text

나는 그것을 다음과 같이 변환하고 싶습니다 :

text
more text

펄 사용하기

내 코드는 다음과 같습니다

perl -00 -pe 's/\R+\\centering\R+/\n/g' example.md

전혀 작동하지 않습니다!

이것과 내 대안은 모두

perl -00 -pe 's/\\centering/*/g' example.md

출력을 생성

text
*
more text

그리고

perl -00 -pe 's/\R+/\n*/g' example.md

생산하다

text
*\centering
*more text

그래서 그들은 개별적으로 일하지만 함께 일하지는 않습니다. 내가 여기서 뭘 잘못하고 있는 걸까요?!

답변1

레코드 구분 기호로 사용하지 마십시오 0. 사용하는 것이 더 편리합니다.777

perl -0777 -pe 's/\R+\\centering\R+/\n/g' example.md
#      ^^^

원하는 결과가 나옵니다.

에서선적 서류 비치:

특수 값 00은 Perl이 단락 모드에서 파일을 후루룩 소리나게 합니다. 0400 이상의 값은 Perl이 파일 전체를 후루룩하게 만들지만 관례적으로 값 0777은 이 목적에 일반적으로 사용되는 값입니다.

관련 정보