유틸리티 소개

sed와 grep에서 정규표현식 사용할 때 차이점

리눅스 명령어에서 쓰는 정규표현식이 JavaScript랑 좀 다르다. 알아두면 삽질을 줄일 수 있다.

기본 정규표현식 vs 확장

grep은 기본 정규표현식을 쓴다. + ? | 같은 건 이스케이프해야 한다. grep -E나 egrep은 확장 정규표현식이라 이스케이프 불필요.

sed도 마찬가지

sed 기본은 +를 문자 그대로 본다. sed -E라고 해야 하나 이상을 찾는다. 정규표현식 테스터에서 패턴 검증 후 명령어에 적용하자.

그룹 캡처

sed에서 그룹과 역참조 문법이 JavaScript와 다르다. 환경마다 문법이 조금씩 다르니 주의. 테스터로 확인하고 쓰자.

플래그 조합 활용

g, i, m 플래그를 상황에 맞게 조합해서 쓰면 더 유연하게 매칭할 수 있다. 대소문자 구분 없이 전역 검색하려면 gi를 쓰고, 여러 줄 처리가 필요하면 m을 추가하자. 정규표현식 테스터에서 플래그별 차이를 확인해보자.

캡처 그룹 효율적으로 쓰기

캡처 그룹이 많으면 성능에 영향을 줄 수 있다. 캡처가 필요 없는 그룹은 (?:...)로 비캡처 그룹으로 만들자. 정말 추출해야 하는 부분만 괄호로 감싸면 된다.

정규표현식 라이브러리 활용

자주 쓰는 패턴들은 라이브러리로 만들어져 있다. 이메일, 전화번호, URL 검증 같은 건 이미 검증된 패턴을 가져다 쓰는 게 안전하다. 테스터로 동작을 확인하고 사용하자.

정규표현식 테스터를 적극 활용해서 다양한 패턴을 실험해보자. 실전 경험이 쌓일수록 정규표현식 작성이 수월해진다.