sed를 사용하여 별표가 포함된 텍스트를 찾아 바꾸는 방법 *

sed를 사용하여 별표가 포함된 텍스트를 찾아 바꾸는 방법 *

.procmailrc많은 파일에서 텍스트를 찾아서 바꾸고 및 를 사용 grep하고 싶습니다 sed.

파일에서 다음 줄을 제거하고 싶습니다(시작 부분의 개행 문자 포함) .procmailrc.

* !^FROM_MAILER

변경하려는 파일의 전체 내용:

:0
* !^FROM_MAILER
! [email protected]

도착하다:

:0
! [email protected]

내가 실행하는 명령은 다음과 같습니다.

grep -lir '\n* !^FROM_MAILER' .procmailrc | xargs sed -i 's/\n* !^FROM_MAILER//g'

하지만 이를 대체하지는 않습니다 *. 남은 줄은 *위의 줄뿐입니다. 다음과 같이 탈출 해도 *작동하지 않습니다.

grep -lir '\n\* !^FROM_MAILER' .procmailrc | xargs sed -i 's/\n\* !^FROM_MAILER//g'

그래서 나는 그 안에 포함된 전체 줄을 삭제하기 위해 찾기 및 바꾸기를 수행하는 방법을 알아내려고 노력하고 있습니다 *.

답변1

단독으로 사용 sed:

sed -i '/^* !^FROM_MAILER$/d' file

* !^FROM_MAILER앞뒤에 아무것도 없는 정확한 문자열을 포함하는 전체 줄을 삭제합니다 . 이 d명령은 행을 삭제합니다.


편집하다: 모든 파일에서 반복적으로 교체를 수행하려면 다음 명령을 사용하십시오.

find /path -type f -exec sed -i '/^* !^FROM_MAILER$/d' {} +

관련 정보