제가 메일 서비스를 담당하는 관계로, 메일 서버의 로그나 관련 데이터를 뒤질 일이 적지 않습니다. 데이터량이 적으면야 대충 대충 어떻게든 하겠지만, 백만라인을 넘어간다던지, 데이터 파일의 크기가 50메가가 넘는다던지 하게 되면 그 안에 필요한 데이터만 뽑기가 완전 뭣같죠(...) Acroedit로 파일 나누고, 엑셀로 임포팅하면 한 3만년 걸리는 경우가 좀 있고, 대부분의 경우 그냥 시스템이 뻗어버립니다. -_-;
개발자는 아니지만 틈틈히 개발자분들 귀찮게 하다가 nix 환경에서 grep 커맨드가 있다는 사실을 알게 되었습니다. 그 큰 파일에서 필요한 텍스트가 있는 부분만 찾아내주는 아주 유용한 커맨드더군요. 혹여나 짧은 상식에 윈도에도 그런게 있나 싶어 Command Console을 열고 grep을 치니 아래와 같이 나오더군요.
이런.. &(%^$%!@^%$^!%$@#!!!!! 나는 어쩌라고!!!! 제가 회사에서 MS Office 2007 Beta 2 버전을 쓰고 있는데, 제아무리 엑셀 2003까지의 라인제한이었던 65,536 라인의 몇배를 지원하는 Excel 2007 이라 하더라도 몇십만줄을 한번에 부르기도 불가능한 상황이고, 설혹 나눠서 부른다고 해도 컴퓨터가 중간에 뻗어버리는데 어찌하오리까. -_-;
그러다가 문득 아~주 옛날에 "파일검색"용인 줄 알았던 커맨드, find가 떠올랐습니다. 컴퓨터를 잘 모르던 시절이니 안된다고 투덜거리기만 했지요. 그래서 find 명령어를 쳐보니, 아니. 살아있는겁니다.
find /? 를 입력해서 스위치 및 매개 변수를 봤습니다.
nix 계열의 grep 커맨드와 비교했을 때 상당히 간단하고, 제한된 범위 내의 기능만을 제공하고 있습니다만, 적어도 제가 필요한 "특정 문자열을 가진 라인의 추출" 기능을 사용할 수 있으니 꽤 만족스럽네요.
find 문의 기본 구문은 [find "문자열" 파일이름] 입니다. 별다른 스위치를 달지 않고 저렇게만 입력하면 해당 파일에서 특정 문자열을 가진 라인을 화면으로 표시해줍니다. 이걸 파일로 표시하기 위해서는 "> 파일명"을 덧붙여주면 되는군요.
예를 들어, at.txt 파일에서 widelake 라는 문자열을 가진 파일을 pentium.txt로 저장하려면 아래와 같이 쓰면 됩니다.
스위치는 다음 것들이 있군요.
/V 지정한 문자열이 없는 줄을 표시합니다.
/C 지정한 문자열이 있는 줄 수만을 표시합니다.
/N 지정한 문자열이 있는 각 줄 앞에 줄 번호를 붙입니다.
/I 대/소문자를 구별하지 않고 찾습니다.
/OFF[LINE] 오프라인 속성 세트 파일을 건너뛰지 않습니다.
/V를 붙이게 되면 (c:\find /v "widelake" at.txt > pentium.txt) widelake 문자열을 포함하지 않는 라인만 pentium.txt 파일로 저장하게 됩니다. /V를 붙이면 안 붙인 것과 정 반대의 결과값이 나오는 거죠.
/C는 문자열을 포함하는 라인의 갯수만 출력해줍니다. 열 전체를 저장해주는게 아니구요.
/N은 저장할 때 해당 라인의 라인번호를 같이 붙여줍니다. /C 스위치하고 같이 쓸 수는 있는데 어차피 /C는 라인갯수만 세어주기 때문에 의미는 없습니다. 그리고 /I는 대소문자 구별을 해제하는 것인데, 영문 문자열을 찾을때만 해당되는 사항이군요. /OFFLINE 은 뭔지 모르겠습니다. -_-;
실제 써보도록 하겠습니다.
아래 내용을 가진 at.txt 파일이 있다고 가정하겠습니다.
① find "widelake" at.txt
---------- AT.TXT
widelake
widelake dreamwiz
② find /v "widelake" at.txt
---------- AT.TXT
gmail
widela skku
iriver
③ find /c "widelake" at.txt
---------- AT.TXT: 2
④ find /v /c "widelake" at.txt
---------- AT.TXT: 3
⑤ find /n "widelake" at.txt
---------- AT.TXT
[1]widelake
[2]widelake dreamwiz
⑥ find /v /n "widelake" at.txt
---------- AT.TXT
[3]gmail
[4]widela skku
[5]iriver
뭐 이정도 결과값들을 뽑아줍니다. 상당히 괜찮은 커맨드이니 윈도만 사용하시면서 grep을 그리워(?)하는 분들은 부족하나마 써보시는 것도 괜찮을 듯 합니다. :D grep 하나 때문에 리눅스 라이브CD까지 쓴 저로써는 -_-; 흑흑.
개발자는 아니지만 틈틈히 개발자분들 귀찮게 하다가 nix 환경에서 grep 커맨드가 있다는 사실을 알게 되었습니다. 그 큰 파일에서 필요한 텍스트가 있는 부분만 찾아내주는 아주 유용한 커맨드더군요. 혹여나 짧은 상식에 윈도에도 그런게 있나 싶어 Command Console을 열고 grep을 치니 아래와 같이 나오더군요.
당연히 그딴거 없다.
이런.. &(%^$%!@^%$^!%$@#!!!!! 나는 어쩌라고!!!! 제가 회사에서 MS Office 2007 Beta 2 버전을 쓰고 있는데, 제아무리 엑셀 2003까지의 라인제한이었던 65,536 라인의 몇배를 지원하는 Excel 2007 이라 하더라도 몇십만줄을 한번에 부르기도 불가능한 상황이고, 설혹 나눠서 부른다고 해도 컴퓨터가 중간에 뻗어버리는데 어찌하오리까. -_-;
그러다가 문득 아~주 옛날에 "파일검색"용인 줄 알았던 커맨드, find가 떠올랐습니다. 컴퓨터를 잘 모르던 시절이니 안된다고 투덜거리기만 했지요. 그래서 find 명령어를 쳐보니, 아니. 살아있는겁니다.
아직 안 죽고 살아있었..;
find /? 를 입력해서 스위치 및 매개 변수를 봤습니다.
nix 계열의 grep 커맨드와 비교했을 때 상당히 간단하고, 제한된 범위 내의 기능만을 제공하고 있습니다만, 적어도 제가 필요한 "특정 문자열을 가진 라인의 추출" 기능을 사용할 수 있으니 꽤 만족스럽네요.
find 문의 기본 구문은 [find "문자열" 파일이름] 입니다. 별다른 스위치를 달지 않고 저렇게만 입력하면 해당 파일에서 특정 문자열을 가진 라인을 화면으로 표시해줍니다. 이걸 파일로 표시하기 위해서는 "> 파일명"을 덧붙여주면 되는군요.
예를 들어, at.txt 파일에서 widelake 라는 문자열을 가진 파일을 pentium.txt로 저장하려면 아래와 같이 쓰면 됩니다.
C:\>find "widelake" at.txt > pentium.txt
스위치는 다음 것들이 있군요.
/V 지정한 문자열이 없는 줄을 표시합니다.
/C 지정한 문자열이 있는 줄 수만을 표시합니다.
/N 지정한 문자열이 있는 각 줄 앞에 줄 번호를 붙입니다.
/I 대/소문자를 구별하지 않고 찾습니다.
/OFF[LINE] 오프라인 속성 세트 파일을 건너뛰지 않습니다.
/V를 붙이게 되면 (c:\find /v "widelake" at.txt > pentium.txt) widelake 문자열을 포함하지 않는 라인만 pentium.txt 파일로 저장하게 됩니다. /V를 붙이면 안 붙인 것과 정 반대의 결과값이 나오는 거죠.
/C는 문자열을 포함하는 라인의 갯수만 출력해줍니다. 열 전체를 저장해주는게 아니구요.
/N은 저장할 때 해당 라인의 라인번호를 같이 붙여줍니다. /C 스위치하고 같이 쓸 수는 있는데 어차피 /C는 라인갯수만 세어주기 때문에 의미는 없습니다. 그리고 /I는 대소문자 구별을 해제하는 것인데, 영문 문자열을 찾을때만 해당되는 사항이군요. /OFFLINE 은 뭔지 모르겠습니다. -_-;
실제 써보도록 하겠습니다.
아래 내용을 가진 at.txt 파일이 있다고 가정하겠습니다.
widelake
widelake dreamwiz
gmail
widela skku
iriver
widelake dreamwiz
gmail
widela skku
iriver
① find "widelake" at.txt
---------- AT.TXT
widelake
widelake dreamwiz
② find /v "widelake" at.txt
---------- AT.TXT
gmail
widela skku
iriver
③ find /c "widelake" at.txt
---------- AT.TXT: 2
④ find /v /c "widelake" at.txt
---------- AT.TXT: 3
⑤ find /n "widelake" at.txt
---------- AT.TXT
[1]widelake
[2]widelake dreamwiz
⑥ find /v /n "widelake" at.txt
---------- AT.TXT
[3]gmail
[4]widela skku
[5]iriver
뭐 이정도 결과값들을 뽑아줍니다. 상당히 괜찮은 커맨드이니 윈도만 사용하시면서 grep을 그리워(?)하는 분들은 부족하나마 써보시는 것도 괜찮을 듯 합니다. :D grep 하나 때문에 리눅스 라이브CD까지 쓴 저로써는 -_-; 흑흑.
'IT > 소프트웨어' 카테고리의 다른 글
인터넷 익스플로러 7 정식판 릴리즈 (13) | 2006.10.19 |
---|---|
씽크프리 오피스(Thinkfree Office) + NAVER (8) | 2006.09.30 |
MS Update - 공정거래위원회 홍보링크 (4) | 2006.08.23 |
iriver Plus 3 문제 해결 (2) | 2006.08.20 |
ActiveSync, 핸드폰 케이블을 싫어하나봅니다 (0) | 2006.08.15 |