delphi에서 grep 사용하기

시스템 | 2021.11.30 20:50

현재 업무에서 delphi를 쓰고있는데 특정소스에서 한글매칭되는 키워드를 찾아야 한다.
문자열 매칭되는 파일을 찾거나 필터링할때 보통 unix에서 grep을 사용하는데 이에 상응하는 windows 에서의 명령어를 찾던 중 delphi에서 grep을 제공하고 있었다.

linux에서의 grep 사용은 아래서 확인한다.

https://innu.pe.kr/view/man-grep

 C:\Program Files (x86)\Borland\Delphi7\Bin> grep ?
 Turbo GREP 5.5 Copyright (c) 1992, 1999 Inprise Corporation
 Syntax:   GREP [ -rlcnvidzuwo ] searchstring file[s] or @filelist

 Option are one or more option characters preceded by "-", and optionally 
 followed by "+" (turn option on), or "-" (turn it off).   The default is "+".
     -r+   Regular expression search		-l-   File names only
     -c-   match Count only			-n-   Line numbers
     -v-   Non-matching lines only		-i-   Ignore case
     -d-   Search subdirectories		-z-   Verbose
     -e    Next argument is searchstring	-w-   Word search
     -o-   UNIX output format	            Default set: [0-9Z-Z_]
     -q-   Quiet: supress normal output
     -u xxx Create a copy of grep named 'xxx' with current options set as default

A regular expression is one or more occurrences of: One or more characters
optionally enclosed in quotes.  The following symbols are treated specially:
	^   start of line
	.   any character
	*   match zero or more
	[aeiou0-9]   match a, e, i, o, u, and 0 thru 9 ;
	[^aeiou0-9]  match anything but a, e, i, o, u, and 0 thru 9

일반적으로 통합개발툴에서 소스검색을 할 때 내부적으로 grep 같은 문자열 필터링 명령어를 내장하고 있는 경우가 많다.
delphi의 폼파일은 dfm 확장자를 사용하는데 통합개발툴에서 한글 키워드를 조회하면 변환된 문자열로 조회된다.
아무래도 유니코드를 직접 처리하지 않는거 같다.
따라서 다음과 같이 조회하면 된다.

# "통계" or "현황"에 매칭되는 부분을 찾는다.
C:\> grep -dor "#53685[' ]*#44228|#54788[' ]*#54889" C:\Source\*.dfm

나중에 알았지만 windows에서 findstr을 사용해도 비슷한 결과를 얻을 수 있다.


"시스템" 카테고리의 다른 글

댓글쓰기

"delphi에서 grep 사용하기" 의 댓글 (0)