파일을 필터링하고 정규식 일치 항목을 스트리밍할 수 있습니다. 하지만 대용량 파일에서는 해당 항목을 제거해야 합니다.
정규식:^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
sed -e '/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/d/ /g' file
경기만 스트리밍되며 교체/컷은 되지 않습니다.
일치하는 파일이 포함된 파일도 검색할 수 있습니다.
작동하게 하는 공식은 무엇입니까?
답변1
PCRE(Perl Compatible Regular Expressions) 및 을(를) 사용하고 있는 것 같습니다 sed
. 기본적으로 이 sed
유틸리티는 BRE(기본 정규식)(또는 대부분의 시스템에서는 ERE(확장 정규식) -E
)만 인식합니다.
저도 구문이 정확하다고는 생각하지 않습니다 sed
만, 문제의 표현에 추가 내용이 있는 것 같아서 읽기가 어렵습니다 *
. 이메일에서 다중 부분 구분 기호를 제거하려는 것 같지만 이를 올바르게 일치시키는 것(다중 부분 섹션의 시작 부분을 해당 닫는 구분 기호와 일치)에 신경 쓰지 않는 것 같습니다. 구문이 수정 되면 sed
표현식은 이메일의 전체 내용을 삭제하거나 모든 첨부 파일을 메시지 본문에 병합할 수 있습니다.
PCRE 표현
^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
ERE와 동일( 와 함께 사용 sed -E
)
^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3})?=$
(당신이하고있는 것 같은) 그것을 사용하여 줄을 제거하지만 명령의 후행은 d
오류입니다. 삭제하면 모든 첨부 파일이 이메일 본문에 병합될 수 있습니다./ /g
sed
/ /g
이메일 첨부 파일을 삭제하려는 경우(예:댓글에서 지적한), 나는 sed
이 작업을 수행하기 위해 올바른 이메일 파서를 사용하려고 시도하지 않을 것입니다.
이를 수행하는 방법의 예는 다음 관련 질문에서 찾을 수 있습니다.
개인적으로 나는 위의 첫 번째 링크에 링크된 질문/답변에 있는 것과 유사한 Perl 스크립트를 작성하겠습니다. 항상 이러한 스크립트의 테스트 실행을 실행해야 합니다.복사실수할 경우를 대비해 이메일을 보내주세요.
이메일 fdm
도구는 다음을 수행할 수 있습니다.필터이는 메시지의 첨부 파일 수 및/또는 크기를 기준으로 보관 사서함에서 대용량 이메일을 필터링하는 편리한 방법일 수 있습니다.
답변2
노력하다:
sed -E "s/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$//g" file
출력을 다시 확인하십시오. 자본 이어야 합니다 -E
. -e
작동하지 않습니다.
작동한다고 확신하면 -iE
파일을 사용하여 직접 변경하십시오.