로그 정규표현식으로 필요한 값만 추리기
· LinuxRegexLog
최근 로그 수정이나 conf 파일 수정을 해야할 일이 많이 생겨 정규표현식을 공부하고 있었다.
사용 에디터: notepad++
예제 (방화벽 로그)
version=20231013 idseq=18 itime=1690812603 date=2023-07-31 time=23:10:03 ... srcip=203.0.113.10 srcport=31010 ... dstip=198.51.100.10 dstport=3306 service="TCP/3306/3306" ...
출력되길 원하는 값
date, srcip, srcport, dstip, dstport
date=2023-07-31 srcip=203.0.113.10 srcport=31010 dstip=198.51.100.10 dstport=3306
로그파일이 수십개가 되니 한번만 바꾸기를 눌러도 엄청 오래걸리고, 겨우 원하는 정규표현식을 찾아내 필요없는 값을 하나씩 없애는게 상당히 피곤했다. (멍청해서 or을 어떻게 쓰는지 몰랐음)
입력한 정규표현식
version.*itime*.{12}|time.*(?=srcip)|srcintfrole="undefined" |service.*
바꾸기 한 결과
date=2023-07-31 srcip=203.0.113.10 srcport=31010 dstip=198.51.100.10 dstport=3306
이렇게 정리해놓고 보니 정말 별거 아니었지만 몇시간동안 고생을 조금 했다. 도움되는 사이트: regexr.com
예전 블로그에 적었던 작업 기록을 옮겨온 글입니다.