![sed를 사용하여 별표가 포함된 텍스트를 찾아 바꾸는 방법 *](https://linux55.com/image/77807/sed%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%B3%84%ED%91%9C%EA%B0%80%20%ED%8F%AC%ED%95%A8%EB%90%9C%20%ED%85%8D%EC%8A%A4%ED%8A%B8%EB%A5%BC%20%EC%B0%BE%EC%95%84%20%EB%B0%94%EA%BE%B8%EB%8A%94%20%EB%B0%A9%EB%B2%95%20*.png)
.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' {} +