2014-10-18 4 views
0

안녕하세요 모두 내가 많은 사서함에서 일부 도움 ... 내가 청소 (삭제)한다 스팸 메시지 필요 그래서 나는 그것을 찾아야합니다. 메시지에는 스팸, 스팸, 스팸 *** 등과 같은 태그가 있으므로 다른 스팸 방지 도구로 제목에 태그가 지정됩니다. 따라서이 "키워드"로 태그 된 모든 메시지를 찾아야합니다.그렙 SPAM 태그 메시지가

샘플 주제는 다음과 같습니다 *** SPAM *** 구입 비아그라는

내가 파일 이름 및 정규식에 대한 그렙 -E 또는 egrep을위한 그렙 -l을 알고있다.

grep -E "^Subject: \[SPAM\]" 
grep -E "^Subject: \*\*\*SPAM\*\*\*" 
grep -E "^Subject: \*\*\*\ SPAM\ \*\*\*" # (1 space before and after SPAM word) 

togeter를 한 줄에 입력하는 방법은 무엇입니까? grep을 번갈아 사용했습니다 "|" like

"^Subject: (\[SPAM\]|\*\*\*SPAM\*\*\*|\*\*\*\ SPAM\ \*\*\*)" 

그러나 잘 작동하지 않습니다.

하나의 파일에 하나의 메시지가 있으므로 많은 파일이 많은 메시지와 같습니다. 파일의 내용은 다음과 같습니다 :

그래서 필자는 제목 행에만 grep 만 필요합니다. 그게 다야.

+0

당신이 당신의 최종 결과가 있어야하는데 대한 자세한 정보를 포함 할 수 있도록,하지만 아무것도 삭제하지 않습니다 . –

+0

제목을 스팸으로 처리하는 방법 만 편집 했으므로 바로 사용할 수있는 스크립트가 필요하지 않습니다. – Nieogolony

+0

사서함의 형식을 명시 적으로 지정할 수 있습니까? [메일 함 파일 (단일 파일에있는 여러 메일), maildir, mh 폴더] 어떤 스크립팅 언어를 선호하십니까? [perl, python] – AnFi

답변

0

일반적인 정규식 것 -

^Subject:\W*SPAM(?:\W|$) 
0

이 패턴은 작동합니다 :

grep -E '^Subject: [* []+SPAM[] *]+' 

을가 | OR 문을 사용에 대한 필요성을 제거하는 문자 클래스를 사용하여.

입력 :

Subject: [SPAM] 
Subject: SPAM   // shouldn't match 
Subject: ***SPAM*** 
Subject: *** SPAM *** 
Subject: Not Spam  // shouldn't match 
Subject: ** SPAM ** 

출력 :

Subject: [SPAM] 
Subject: ***SPAM*** 
Subject: *** SPAM *** 
Subject: ** SPAM **