2014-03-24 2 views
0

로그 파일을 구문 분석하고 특정 패턴을 찾기 위해 쉘 스크립트가 필요합니다. 그 아빠가 찾으면, 그 라인에서 키 값을 가져 와서 csv에 넣으십시오. 예 :쉘 스크립트 로그를 구문 분석하고 csv로 변환

*webauthRedirect: Mar 24 08:57:50.903: #EMWEB-6-PARSE_ERROR: webauth_redirect.c:1034 parser exited. client mac= a0:88:b4:d3:55:8c bytes parsed = 0 and bytes read = 213 
*webauthRedirect: Mar 24 08:57:50.903: #EMWEB-6-HTTP_REQ_BEGIN_ERR: http_parser.c:579 http request should begin with a character 
***ewmwebWebauth1: Mar 04 11:33:46.870: #PEM-6-GUESTIN: pem_api.c:7851 Guest user logged in with user account (mrathi_dev) MAC address 00:1e:65:39:10:8e, IP address 192.168.133.146.** 
*ewmwebWebauth1: Mar 04 11:33:46.870: #AAA-5-AAA_AUTH_NETWORK_USER: aaa.c:2178 Authentication succeeded for network user 'mrathi_dev' 
*ewmwebWebauth1: Mar 04 11:33:46.858: #APF-6-USER_NAME_CREATED: apf_ms.c:6532 Username entry (mrathi_dev) with length (10) created for mobile 00:1e:65:39:10:8e 
*mmListen: Mar 24 08:57:49.030: #APF-6-RADIUS_OVERRIDE_DISABLED: apf_ms_radius_override.c:1085 Radius overrides disabled, ignoring source 4 
*webauthRedirect: Mar 24 08:57:47.008: #EMWEB-6-PARSE_ERROR: webauth_redirect.c:1034 parser exited. client mac= 5c:a:5b:60:f1:a7 bytes parsed = 0 and bytes read = 440 
*webauthRedirect: Mar 24 08:57:47.008: #EMWEB-6-HTTP_REQ_BEGIN_ERR: http_parser.c:579 http request should begin with a character 
*webauthRedirect: Mar 24 08:57:45.453: #EMWEB-6-PARSE_ERROR: webauth_redirect.c:1034 parser exited. client mac= 5c:a:5b:60:f1:a7 bytes parsed = 0 and bytes read = 440 
*webauthRedirect: Mar 24 08:57:45.453: #EMWEB-6-HTTP_REQ_BEGIN_ERR: http_parser.c:579 http request should begin with a character 

나는에 관심이 있어요 모두가 #PEM-6-GUESTIN 라인은 다음과 같습니다 내가 가지고있는 로그 파일입니다. 이 줄에서 사용자 ID, Mac 및 IP 주소를 가져 와서 csv에 넣어야합니다. 해당 상태의 로그 라인 만 필요합니다.

이것은 처음으로 쉘 스크립트로 작업하며 모든 도움을 주시면 감사하겠습니다.

+1

확인'남자 grep' 및 몇 가지 예 이 사이트에서 찾을 수 있습니다. – fedorqui

+1

처음 시도 할 때 기꺼이하지 않으려는 사람은 결코 그럴 수 없다는 것입니다. – devnull

+0

@ fedorqui : 질문을 편집 해 주셔서 감사합니다. 나는 맨 페이지를보고있다. – user1688976

답변

2

나는 쉽게 정규식 사용하여 그룹을 얻을 수 + 필터링 sedgrep를 사용하여 생각 :

grep "#PEM-6-GUESTIN" log.txt | sed -r "s/.*user account \((.*)\).* MAC address (.*), IP address (.*)\.\*\*.*/\1,\2,\3/" 

그리고 출력은 CSV 형식입니다 :

mrathi_dev,00:1e:65:39:10:8e,192.168.133.146 
+1

여기에 grep은 필요 없습니다.'sed -rn '/ # PEM-6-GUESTIN/{s /.../.../ p}'sed는 필터링을 할 수 있습니다. –

+0

도움 주셔서 감사합니다. – user1688976

+0

당신을 진심으로 환영합니다. 최적화에 대한 감사의 glenn ;-) – arutaku

관련 문제