로그에서 'ERROR' 뒤에 'timeout' 이 나오는 줄만 뽑으려고 lookahead를 썼는데, 어떤 서버에선 grep: invalid option -- P 라고 뜨고, 또 다른 데선 -P는 먹는데 패턴이 아무것도 안 잡힙니다.
$ grep -P '(?=.*ERROR)(?=.*timeout)' app.log
grep: invalid option -- P
# 다른 서버(리눅스)에서는
$ grep -P '(?=.*ERROR)(?=.*timeout)' app.log
(아무 출력 없음)기본 정규식(BRE)에선 lookahead가 안 된다고 해서 -P(PCRE)를 붙였는데도 이 모양입니다. 맥 로컬이랑 리눅스 서버에서 동작이 제각각이라 뭐가 맞는 건지 헷갈립니다. 그냥 두 단어가 같은 줄에 있는 걸 찾고 싶은 건데요.
댓글 0