정규식 (Regular Expression) 정복하기 첫단계

shell script에서 정규식을 활용하는 것은 코드를 단순화 시켜줄 수 있을 뿐 아니라, 활용성이 무궁무진하게 늘어나게 됩니다.

오늘은 원자의 Cartesian 좌표(x y z)중 소수점 앞자리가 일치하는 경우를 grep 해보려고 합니다.

예를 들어 원자들의 좌표가 아래와 같은 형식으로 되어 있는 Filename이 있다고 가정해 보죠.

7.8792177218 3.9913487495 3.323236208
6.3932716748 6.313747307 12.127696     <<--
3.6535306696 8.176414932 9.480269464

이 때 소수점 앞 부분의 6, 6, 12가 일치하는 두번 째 라인을 grep 하려고 합니다.

그럼 정규식은 6\.[0-9]* 6\.[0-9]* 12\.[0-9]와 같이 표현해 주면 됩니다.

여기서 간단한 응용

만약 좌표 사이의 공백이 하나 이상으로 불규칙 한 경우에는?

정규식은 복잡해 보이지만, 규칙을 알고 많은 예제들을 하나씩 살펴보면 조금씩 익숙해질 수 있습니다.

Input 파일을 만들고, Output 파일을 처리할 때 유용하게 활용해보시기 바랍니다.

완성 표현

grep '6\.[0-9]* *6\.[0-9]* *12\.[0-9]' Filename

유용한 옵션: 해당 라인 함께 출력하기 -n

grep -n '6\.[0-9]* *6\.[0-9]* *12\.[0-9]' Filename