.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' {} +