본문 바로가기
Q&A2026년 8월 12일1분 읽기

grep -P 로 lookahead 정규식을 쓰려는데 invalid option 이거나 아무것도 안 잡힙니다

r
regex_junho
조회 304댓글 1

로그에서 '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

아직 댓글이 없습니다.
Ctrl+Enter로 등록