2015-01-15 1 views
0

로그 파일을 기반으로 보고서를 만들어야합니다. 이것을위한 쉘 스크립트를 작성하려고합니다.쉘 스크립트를 사용하여 로그 파일을 기반으로 보고서를 생성하십시오.


[1420520400] CURRENT SERVICE 상태 : 다음 로그 파일이다 서비스; CRITICAL, abc.com HARD 3; OK : OK : 2015년 10월 1일, 사용자 = 2 최근, 종업원 = 0

[1420520400] 현재 서비스 상태 : def.com, CRITICAL; 서비스 HARD 3; 경고 : 2015년 10월 1일 최근, 사용자 = 2, 종업원 수 = 0

[1420520400] 현재 서비스 상태 : ghi.com, 서비스, 위험, 위험, 3, 중요 : 2014-11-19 년, 사용자 = 2, 직원 = 0


이름 : abc.om

날짜 : 2015년 10월 1일

사용자 : 2

다음과 같이이 파일에서

, 내가 보고서를 생성 할

종업원 수 : 0


,510,403,210 이름 : def.om

날짜 : 2015년 10월 1일

사용자 : 2

직원 수 : 0


이름 : ghi.om

날짜 : 2014 -11-19

사용자 : 2

01 23,516,

직원 : 사람이를 달성하는 데 도움이 경우 0


그것은 좋은 것입니다.

+0

grep 및 sed를 사용하여 시도했지만 정확한 결과를 제공하지는 못했습니다. 또한 나는 쉘 스크립팅을 처음 접했습니다. – itzforu

답변

0

이 명령은 위의 출력을 제공합니다. 로그 파일의 파일 이름은 input.log에서 실제 파일 이름으로 변경됩니다.

$ cat input.log |cut -d';' -f1,6|sed -e 's/\<CURRENT SERVICE STATE\>/NAME=/g'|sed -e 's/\<OK\>//g'|sed -e 's/\<Last on\>/Date =/g'|tr -d ':'|sed 's/WARNING//g'|sed 's/CRITICAL//g'|cut -c 14-|tr -s ' '|tr ',;' '\n'                   

출력 :

enter image description here

여기

, 내가 '='를 사용하지만, 당신이 명령에 따라 사용하는 경우 상기와 정확히 같은 출력을 변경할 수

$ cut -d';' -f1,6 input.log|sed -e 's/\<CURRENT SERVICE STATE\>/NAME=/g'|sed -e 's/\<OK\>//g'|sed -e 's/\<Last on\>/Date =/g'|tr -d ':'|sed 's/WARNING//g'|sed 's/CRITICAL//g'|cut -c 14-|tr -s ' '|tr ',;' '\n' |tr '=' ':' 
관련 문제