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을 사용해도 비슷한 결과를 얻을 수 있다.
"시스템" 카테고리의 다른 글
서브넷마스크에 대한 이해 (0) | 2021.12.18 |
log4j 라이브러리 취약점 조치 (0) | 2021.12.18 |
delphi에서 grep 사용하기 (0) | 2021.11.30 |
linux grep man 번역 (0) | 2021.11.30 |
톰캣(Tomcat) Deploy 오류시 해결 메모 (0) | 2021.07.04 |