sed와 grep

regex (regular expression)에 대해서 감사하는 사람들이 많을 것으로 안다. 이 뛰어난 표현 방법으로 원하는 문자열을 찾아내거나 치환할 수 있다. 매우 치밀하게 말이다.

대개 regex는 perl과 함께 쓰는 일이 많다. 그만큼 perl에서 쓰기 편리하기 때문이다. 그 때문에 perl을 애용하는 편이기도 하고 말이다. 반대로 타 언어에서 regex는 쓰기가 perl 만큼 편하지 못하다. 다시 말해서 perl에서는 한 두줄이면 되는 일을 다른 언어에서는 더 많은 trick을 써야 되기 때문이다.

구태여 perl을 쓰지 않아도 수많은 파일들을 검색해서 특정 문자열을 치환하거나 하는 일은 sed로 할 수 있다. 물론 text 상태가 아닌 binary file의 경우도 이것이 가능하다. 특정 파일의 간단한 패칭 또는 해킹(크래킹)을 이런 식으로 해내기도 하니까 말이다. 단순히 접근하면 hex editor 꺼내 들고 설쳐야 할 것 같은 시점에서 sed를 쓰면 매우 간단하게 끝나버리니까.

grep도 마찬가지다. 수많은 파일에서 원하는 문자열이 나타나는지 확인할 때 이만한 게 없다. 수천가지 테스트를 하고 그 결과들이 수천개 폴더에 나눠들어있는데, 그 안에서 어떤 특정 사건이 일어나고 있는지 확인하려면 단순 무식하게는 그 폴더들에 다 들어가서 파일들을 일일히 확인해야 할텐데, 그것은 도저히 사람이 할 일이 못된다. 그냥 grep과 regex를 사용해서 recursive하게 모든 subfolder를 뒤지라고 하면 된다.

혹여나 이들 신통방통한 유틸리티의 쓰임을 몰랐다면 대략 5분만 투자해서 익혀보시기 바란다. 5시간 아니 5일, 5주, 5달 해야할 일을 삽시간에 끝내주는 유틸리티다. (물론 awk라든가 그외에도 유용한 unix util들이 많다)