Perl 단일 라인 코드 대체 코드 블록

Perl 단일 라인 코드 대체 코드 블록

파일이 있어요foo.txt

hello world
      first line to change
        second line to change

foo.txt나는 그것을 읽기로 변경하는 perl one-liner를 작성하고 싶습니다.

hello world
      this is
        my new text

나는 노력했다

perl -p -i -e 's/      first line to change\n        second line to change/      this is\n        my new text/g' foo.txt

하지만 이 스크립트는 파일에 아무 작업도 수행하지 않습니다. 내 한 줄짜리에 문제가 있나요?

답변1

기본적으로 perl입력은 한 번에 한 줄씩 읽혀지므로 정규식은 절대 일치하지 않습니다. 여러 줄 입력을 사용하려면 두 가지 옵션이 있습니다.

단락 모드 활성화:

perl -i.bak -00pe ...

또는 전체 파일을 삼키십시오.

perl -i.bak -0777pe ...

(위의 값은 관례상 전체 파일을 차지 -0400하게 됩니다 )perl-0777

관련 정보