2012-03-21 3 views
1

mbox 형식의 큰 사서함이 있습니다. 모든 기사이므로 헤더 정보가 관련성이 없습니다 (날짜 제외).고유 한 텍스트로 전자 메일 구문 분석

내가 원하는 것은 내 큰 * .mbx 파일을 가져 와서 파일 이름이 각 이메일의 제목이고 모든 헤더가 제거되는 텍스트 파일을 만드는 것입니다.

AWK가 정규 표현식으로이 작업을 수행 할 수 있다고 생각하지만, 이런 종류의 일은 내 전문 분야 (GUI 사용자 이상)가 아닙니다.

내 하드 디스크 공간에 파일을 저장할 수 있기를 바랍니다. Google 데스크톱 검색으로 색인을 생성 할 수 있습니다.

도움을 주시면 감사하겠습니다.

답변

1

여기서 핵심은 레코드 분리 자 변수를 빈 문자열로 설정하는 것입니다. 그러면 "단락"모드에서 파일을 읽습니다.

awk -v RS="" ' 
    /^From/{ 
     # this $0 contains the email headers, grab the subject 
     subject = "no subject" 
     split($0, headers, /\n/) 
     for (idx in headers) 
      if (headers[idx] ~ /^Subject: /) { 
       subject = headers[idx] 
       sub(/^Subject: /, "", subject) 
      } 

     next 
    } 
    { print > subject} 
' large.mbox 

같은 제목의 이메일이있는 경우 메일 본문이 하나의 파일로 연결됩니다.

많은 디스크 사용량 절감 효과를 기대할 수 있습니다. 헤더는 제거되지만 필요한 디스크 블록 수가 늘어납니다.

+0

빠른 응답을 보내 주셔서 감사합니다. 스크립트를 script.sh로 저장하고 awk -f script.sh를 사용하여 스크립트를 실행하려고 시도했으며 공백 문자 앞에 등호를 가리키는^중 하나와 구문 오류가 반환되었습니다. (RS = ""는 =를 가리키고 있습니다.) 내가 잘못하고있는 것을 말해 줄 수 있습니까? 나는 Windows 7 노트북 만 사용할 수 있기 때문에 Windows 용 Gawk을 사용하고 있습니다. 다시 한 번 감사드립니다! 이 경우 – user1284084

+0

을 제거하고'-v RS = ""'옵션을 제거하고 awk 스크립트에'BEGIN {RS = ""}'를 넣으십시오. windows 명령 프롬프트는 아마도 그것을 망칠 것입니다. –

+0

윈도우 박스에 unixy 명령을 넣고 싶다면 cygwin.com을 확인하십시오. –

관련 문제