2014-04-25 2 views
1

로그 묶음으로 로그를 구문 분석하려고합니다. 라이브 추적 (파일에서 꼬리의 종류)에서 구문 분석하려고하는 줄은 "연락처"로 시작하는 줄입니다. 사실 대괄호 ([2a00 : c30 : 7141 : 230 : 1066 : 4f46 : 7243 : a6d2]와 괄호 (56791) 을 변수로 사용하여 숫자를 두 점으로 구분하여 대괄호 사이에있는 모든 것을 사용해야합니다. 위젯은 정규식 검색을 시도했지만 어떻게 처리 해야할지 모르겠습니다.python 패턴 일치 및 프로세스

Contact: "200" <sip:[email protected][2a00:c30:7141:230:1066:4f46:7243:a6d2]:56791;transport=udp;registering_acc=example_com>;expires=600 

답변

0

형식이 항상 같은 경우 : 당신이 tail -f $logfile 같은 것을 통해 새 항목을 얻는 경우

for line in logfile: 
    if "Contact" in line: 

     myIPAddress=line.split('[')[1].split(']')[0] 
     myPort=line.split(']:')[1].split(';')[0] 
0

사용 정규식, 당신은 파이프의 출력을 할 수 있습니다

import re 
logfile = open('xxx.log') 
p = r'\[([a-f0-9:]+)\]:([0-9]+)' 
pattern = re.compile(p) 
for line in logfile: 
    if line.startswith('Contact:'): 
     print pattern.search(line).groups() 
logfile.close() 
+0

Thx. 나는 이것을 고쳤다. 엄마 한테 좋은 지적이야. Thx – user1627588

0

을 할 수 그 :

import re 
import sys 

for line in sys.stdin: 
    m = re.match(r'Contact: .*?\[(.*?)\]:(\d+)', line) 
    if m is not None: 
     address, port = m.groups() 
     print address, port 

표준 입력과 tryes에 들어있는 각 줄을 기본적으로 읽고 관심있는 항목을 찾습니다. 줄이 맞지 않으면 아무 것도 표시되지 않습니다.

+0

Thx. 나는 나의 필요를 채우기 위해 이것을 채택했다. 도와 줘서 나에게 아이디어를 줄래 – user1627588

0
data =re.search(r'Contact: .*?\[(.*?)\]:(\d+)', line_in_file) 
    if match: 
     temp=line_in_file.split('[') 
     temp1=temp[1].split(';') 
     hexValues = re.findall('[a-f0-9]', temp1[0]) 
+0

줄을 찾고 줄을 파서 "[......] : ...;" 이 라인의 모든 값을 가지고 – ceasif

+0

Thx ceasif. 나는 내 문제를 해결했고 너희들은 해결책과 아이디어를 제공하는 것을 도와 준다. Thx 많이 – user1627588

+0

@ user1627588 만약 답답하게 보일 경우 자유롭게 대답 해주세요 : P – ceasif