현재 "."와 일치하는 문자열에 대해 Exim 로그 파일을 구문 분석하는 간단한 .sh 스크립트를 작성하고 있습니다. 현재 output.txt를 볼 때 모든 행에 0이 인쇄됩니다 (606 행). awk이 오류를 던지지 않기 때문에 내 논리가 잘못되었다고 생각합니다.Awk 스크립팅 도움 - 논리 문제
내 코드 (연결 및 카운터 문제로 업데이트 됨)는 다음과 같습니다. 편집 : 나는 dmckee의 대답에서 몇 가지 새로운 코드를 채택했다. 이제는 단순함을 위해 이전 코드와 함께 작업하고있다.
awk '/o'\''/ {
line = "> ";
for(i = 20; i <= 33; i++) {
line = line " " $i;
}
print line;
}' /var/log/exim/main.log > output.txt
아이디어가 있으십니까?
EDIT : 전자 메일 주소에 잘못된 문자가 있기 때문에 (그리고 우리 데이터베이스에서는 o라는 접두사가 붙은 이름으로 만 표시되기 때문에) 명확히하기 위해 전자 메일 주소에서 "o"를 grepping하려고합니다.
편집 2 :
이[xxx.xxx.xxx.xxx] kathleen.o'[email protected] <kathleen.o'[email protected]> routing defer (-51): retry time not reached
[xxx.xxx.xxx.xxx] julie.o'[email protected] <julie.o'[email protected]> routing defer (-51): retry time not reached
[xxx.xxx.xxx.xxx] james.o'[email protected] <james.o'[email protected]> routing defer (-51): retry time not reached
[xxx.xxx.xxx.xxx] daniel_o'[email protected] <aniel_o'[email protected]> routing defer (-51): retry time not reached
가 20 필드 전에 모든 것이 표준입니다 내 루프 (20)에서 시작하고 그 이유가 있기 때문에 : 해설 요청에 따라, 여기에 몇 가지 원하는 출력의 소독 샘플입니다 내 목적에 필요하지 않은 정보를 여기서 기록하십시오. 내가 필요한 것은이 솔루션의 IP와 그 이상이다. (각 550 오류에 대한 메시지는 사용중인 각 메일 서버마다 다르다.) 일반적인 메시지 목록을 컴파일 중이다.
원본 로그 파일의 한 줄입니까? –
나는 그것 (민감한 데이터가 거기에서)을 검열해야 할 것이다. 그러나 여기는 하나 다 : 2008-09-28 04:50:43 1KisKj-0000tX-L0 == james.o'[email protected] 라우팅 지연 (-51) : 재시도 시간에 도달하지 않았습니다 –
junkforce
당신이 새 라인 화 된 샘플 파일 (몇 줄의 가치)과 원하는 출력을 제공한다면, 당신은 12 개의 무료 펄을 얻을 수 있습니다, 파이썬과 루비 솔루션이 훨씬 더 간단했습니다. –