내 로그 파일은 다음 형식입니다.
mm/dd/yyyy hh:mm:ss Description
11/05/2013 03:01:00 Shutting down server...
11/05/2013 03:01:23 DumpCache(): 284114 items.
일을 간단하게 유지하기 위해 다음 정규식을 사용하여 날짜를 일치시킬 수 있습니다.
^(../../....)
이것은 모든 줄이 슬래시를 포함하여 10 자리 날짜로 시작한다는 것을 알고 있기 때문에 작동합니다. 그러나이 검색의 목적은 로그의 모든 줄을 찾는 것이 아니라 다음 줄이 이전 줄과 일치하지 않을 때 (날짜 변경) 찾는 것입니다.
뒷모습이이 일을 할 수 있다고 생각하지만 설명과 시간을 무시하고 이전 줄의 날짜 만 보는 방법을 알 수 없습니다.
파이썬에서 :
import re
diff_line_re = re.compile(r'''
(?:
(?P<date>\d{2}/\d{2}/\d{4})
\s+
(?P<time>[\d:]+)
\s+
(?P<message>[^\n]+)
\n
)(?!(?P=date))
''', re.X)
주어진 데이터 :
log_lines = '''
11/05/2013 03:01:00 1 Shutting down server...
11/05/2013 03:01:23 2 DumpCache(): 284114 items.
11/05/2013 03:01:00 3 Shutting down server...
11/07/2013 03:01:23 5 DumpCache(): 284114 items.
11/07/2013 03:01:00 6 Shutting down server...
11/08/2013 03:01:23 7 DumpCache(): 284114 items.
11/08/2013 03:01:00 8 Shutting down server...
11/09/2013 03:01:23 9 DumpCache(): 284114 items.
'''
스크립트를 실행합니다.
print(diff_line_re.findall(log_lines))
Ouput :
[('11/05/2013', '03:01:00', '3 Shutting down server...'),
('11/07/2013', '03:01:00', '6 Shutting down server...'),
('11/08/2013', '03:01:00', '8 Shutting down server...'),
('11/09/2013', '03:01:23', '9 DumpCache(): 284114 items.')]
자세한 내용은 python regexes 문서를 참조하십시오. http://docs.python.org/3/library/re.html#module-re
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다