2024년 6월 23일 일요일

Splunk의 eval과 rex - 4th

.을 기준으로 첫 번째 문자열을 추출하는 정규표현식.

한 줄 테스트

rex에서는 잘 동작한다.


그런데 같은 정규표현식이 eval replace 함수에서는 다른 결과를 가져옴.


이유는 Message 필드가 단일값이 아닌 다중값이기 때문. 정규표현식이 모든 줄 단위 검색 결과를 가져왔다는 얘기.


rex는 왜 다를까?

정규표현식은 패턴 일치가 발생하는 순간 검색을 중단하는 게 기본 동작. 일치하는 모든 패턴을 검색하려면 글로벌(g) 모드를 사용해야 한다. (글로벌 모드 지원 여부는 환경에 따라 다름)

두 줄 테스트

다음은 rex max_match 제한(기본값 1: 1회 검색)을 해제한 결과. 정규표현식에서 글로벌 모드를 사용한 결과, eval replace 함수와 같은 결과를 보여준다. 


eval replace 함수는 글로벌 모드를 기본 사용한다는 얘기. 그런데 이걸 조절하는 옵션은 따로 제공하지 않는다. 정규표현식이 줄 구분을 무시하도록 한 줄(single line) 검색 모드 적용.

두 줄 테스트

참고로 rex는 이렇게 해도 된다. 1회 검색이 기본이라 첫 번째 줄만 검색하기 때문.


댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스