메일 관련 문제가 있습니다. [email protected]
와 2명 사이의 모든 메시지를 받아야 합니다
[email protected]
.
:file
From: [email protected]
to: [email protected]
<body of the message1>
From: [email protected]
to: [email protected]
<body of the message1>
From: [email protected]
to: [email protected]
<body of the message1>
From: [email protected]
to: [email protected]
<body of the message1>
From: [email protected]
to: [email protected]
<body of the message1>
나는 다음을 사용하려고했습니다 sed
:
sed -n "/From: [Ss]omebody1/,/From: /p" inputfile > test.txt
그 결과 나는 누군가1로부터 모든 메일을 test.txt
파일로 받았습니다.
sed
질문은: someone1과 person 간에 메일만 받으려면 어떤 구조를 갖춰야 합니까 ?
답변1
와 함께 sed
:
sed -n '/^From: [email protected]/{h;n;/^to: [email protected]/{H;g;p;:x;n;p;s/.//;tx}}' file
/^From: [email protected]/
From:
: 먼저 이메일 주소를 검색하세요.h;
해당 라인을 보류 공간에 저장하십시오.n;
다음 라인(to:
라인)을 로드합니다.
/^to: [email protected]/
to:
: 이메일 주소를 검색하세요H;
해당 줄을 보류 공간에 추가하세요.g;
홀드 공간을 패턴 공간에 복사합니다.p;
패턴 공간을 인쇄합니다.:x;
라는 라벨을 설정하세요x
.n;
다음 줄(이메일 본문) 로드p;
그 줄을 인쇄하세요.s/.//
해당 줄에서 대체를 수행합니다(단지 한 문자만 대체)...tx
...t
해당 대체가 성공했는지 명령이 확인할 수 있습니다(이메일 본문 끝과 같이 행이 비어 있지 않은 경우). 그렇다면 레이블로 돌아가서x
빈 줄이 나타날 때까지 반복하고, 그렇지 않으면 스크립트 끝으로 이동합니다.
출력:
From: [email protected]
to: [email protected]
<body of the message1>
From: [email protected]
to: [email protected]
<body of the message1>
답변2
awk로:
awk '/From: [Ss]omebody1/{flag=1;next} \
/to\: person1/ {if (flag>0) {flag=2; print; next} else {flag=0; next}} \
/From/{flag=0} {if (flag==2){print NR,flag, $0}} ' input.txt
/From: [Ss]omebody1/{flag=1;next} \
일치 시 플래그 변수를 1로 설정하고 해당 줄을 건너뜁니다./to\: person1/
플래그가 1이면 2로 업데이트하고, 그렇지 않으면 0으로 재설정합니다./From/{flag=0}
일치하면 플래그 값이 재설정됩니다.{if (flag==2){print NR, $0}}
플래그가 2이면 다음을 인쇄합니다.줄번호그리고 라인.
person1
다른 일치 항목을 가지려면 값을 변경하십시오 .
사용된 입력 파일
From: [email protected]
to: [email protected]
<body of the message1>
From: [email protected]
to: [email protected]
<body of the message2>
From: [email protected]
to: [email protected]
<body of the message3>
From: [email protected]
to: [email protected]
<body of the message4>
From: [email protected]
to: [email protected]
<body of the message5>