티스토리 뷰



리눅스나 유닉스 환경에서 개발해본 경험이 있는 개발자라면 grep 툴을 vim, ctags와 같은 도구와 더불어 개발자에게는 없어서는 안될 필수 도구로 뽑는데 대부분 이의가 없을 것입니다. 


grep은 특정 텍스트 스트링이나 텍스트 조합 형태(정규식 적용 스트링)를 포함하고 있는 파일을 검색하기 위한 도구로


예를들어,


소스 코드에서 #define으로 시작하는 모든 행을 추출 한다거나,

function function_name( ) 형태로 기술되어진 모든 함수 정의 문장을 추출한다거나,

변수명 aaa를 사용하는 모든 소스 코드명을 추출하는 등의 용도에 grep 도구를 사용할 수 있습니다.


그런데, 윈도우 환경에서 grep을 사용하려면 윈도우 환경에서 리눅스 콘솔 명령을 그대로 사용할 수 있도록 해주는 cygwin(http://www.cygwin.com/ )을 설치하고 grep을 설정하여 사용하는 방법도 있지만,


GUI 환경을 이용하여 사용자가 사용법을 잘 몰라도 쉽게 사용할 수 있고, 워드나 PDF파일 검색등 grep이 하지 못하는 기능을 부가적으로 수행하는 dnGREP을 설치해서 사용하는 방법도 있습니다.


몰론, 윈도우 탐색기에서 검색할 수도 있겠지만, 사용해본 사용자라면 공감하겠지만 별로 추천할 방법은 아닙니다.


dnGREP은 깃허브에서 제공하고 있습니다(http://dngrep.github.io)



dnGREP의 라이선스는 GPL2로 기업에서도 문제 없이 사용 할 수 있습니다.



■ 설치 과정


gnGREP의 사용자 인터페이스가 .NET 4 기반이므로 .NET Framework 4가 설치되어 있는지 확인하고 없다면   https://dotnet.microsoft.com/download 를 통해서 설치 합니다(윈도우 7 이상은 기본적으로 설치 되어 있으므로 이과정은 생략해도 무방).


https://github.com/dnGrep/dnGrep/releases 사이트에서 최신 정식 버전을 다운로드 받습니다. C#으로 작성한 소스 코드도 흥미를 일으킵니다. 편리함을 위해서 파일을 첨부해 둡니다.


dnGREP.2.8.16.x86.msi


설치 프로그램을 실행시킨 다음 GPL 라이선스에 동의하고 다음화면에서 3가지 plugin 설치 선택을 확인하고 Next를 누르면 설치는 끝납니다(압축 파일 내부와 워드 문서, PDF 문서를 검색할 수 있는 플러그인이므로 같이 설치해 두면 편리하게 사용할 수 있습니다).



■ 사용하기


탐색기에서 특정 스트링을 찾고자하는 디렉토리로 이동하여 오른쪽 마우스 메뉴에서 dnGREP을 선택하거나, 시작>프로그램>dnGREP을 선택하여, 아래의 그림과 같이 상단의 ...을 클릭하여 검색하고자 하는 디렉토리로 이동후 "Folder Selection" 상태에서 열기를 클릭하면 해당 폴더를 검색 대상으로 할 수 있습니다.



검색 대상 폴더를 선택한 다음 단계는 찾을 문자열을 "Search for" 항목에 기술하는 것입니다.  "AAA"로 시작하고 "ZZZ"로 끝나는 문자열등의 다양한 가능성을 가진 복잡한 스트링을 검색할 때는 정규식을(Regex) 선택하여 기술 합니다.


현재 선택한 폴더와 더불어 그 하위 폴더까지 검색할 때는 "Include subfolders"를 체크하고, 워드, PDF, 압축 파일등에 있는 스트링을 검색하고 싶을 때는 "Include binary files"를 선택 합니다.


특정 파일 확장자로 검색을 제한하고 싶을 때는 "Files that match:"항목에 *.c와 같이 필터링 옵션을 지정 합니다. 다음 그림은 class라는 스트링을 하위 폴더를 포함하여 *.php 확장자 파일에 대하여 검색한 결과 입니다.



검색 결과에는 검색된 파일과 어떤 라인에서 발견했는지를 표시하는데, 사용하는 텍스트 편집기와 옵션을 설정해 놓으면 더블클릭하여 지정한 텍스트 편집기로 해당 파일을 열고 검색된 라인으로 이동하여 편집 및 기타 작업을 원활하게 수행할 수 있습니다. 



위의 그림은 검색 파일을 jEdit로 열면서 해당 라인으로 이동하도록 옵션을 설정한 예제입이다.



위의 화면은 검색 결과와 노트 패드 ++를 연결한 예제입니다.


검색 사용법이 익숙해 지면 여러 소스 코드를 일괄적으로 검색해서 치환하는 작업도 Replace를 통해서 가능 합니다.  이런 일괄 치환 작업은 통상 코드 리팩토링 등의 작업이 필요한 경우에 많이 사용 합니다.  리팩토링은 이클립스나 비주얼 스튜디오에서 제공하는 리팩토링(Refactoring) 도구를 통해서 하는 것이 구문 분석을 기반으로 하는 정확한 작업의 장점이 있지만 문법적 치환이 여의치 않거나, 정규식등의 적용이 보다 효율적인 경우에는 dnGREP을 통해 리팩토링 하는 것이 효과적일 수 있으니 상황에 따라 적절한 방법을 택하는 것이 좋습니다.


좋은 도구 사용은 시간을 벌어 줍니다!




댓글
댓글쓰기 폼