>> Read No. 889 article  
xgrep - 가난하고 게으른 사람들을 위해서..

등록 2000-12-21 02:00:00     조회 5
이름 awknn    

		소스코드 디렉토리에서 뭔가 찾을때 ctags 를 쓰는데
원하는게 나오지 않을 때가 많습니다. 그래서 결국
grep -r 을 쓰게 되는데, 이건 쉽게 쓰면 바이너리까지
다 검사해 버리죠. 그래서 머리 굴려서 간단한 스크립트를
만들었습니다. 이걸 돌리기 위해서는
grep, tee, less, wc, vim, cut, find, xargs 등이
설치되어 있어야 합니다.
 사용법은 다음과 같습니다:
  xgrep SetClockFrequency
   현재 디렉토리와 서브 디렉토리에서 소스코드일 것 같은
  파일들을 뒤져서 SetClockFrequency 라는 문자열을
  찾습니다.
   찾은 다음에는 이것을 less로 보여주고,
  less를 빠져 나가면 다시 vim -q 명령으로
  하나씩 열어서 보여 줍니다.
  vim 안에서 다음에 나온 SetClockFrequency를
  찾는 명령은 :cn 이라는 것은 기억 하시는지?
 xgrep +*.h SetClockFrequency
   현재/서브 디렉토리에서 *.h 파일들만을 골라서 이들 중
  SetClockFrequency 가 들어 있는 파일을 찾습니다.
  그 이후는 위와 같습니다.
 xgrep +*.h +*.c SetClockFrequency
   현재/서브 디렉토리에서 *.h 와 *.c 파일들만을 골라서
  SetClockFrequency 들어 있는 줄을 찾습니다.
  그 이후는 위와 같습니다.
  만약! emacs를 쓰시는 분이라면, 아래 스크립트에서
   browse=어쩌구저쩌구
 라고 되어 있는 줄을 지우시면 emacs 의 grep 모드용
명령으로 사용하실 수 있습니다.
 음 별거 아닌 줄은 저도 알지만, 갑자기 누군가 이런게
필요할 것 같은 예감이 갑자기 스쳐서 적어 봤습니다.
 ---------------- xgrep.sh ------------------
#!/bin/sh
 browse="|tee xgrep.out |less -eR; (wc xgrep.out && vim -q xgrep.out)"
 opts=
pats=
root=.
query=
 while [ ! -z "$1" ]; do
    case $1 in
        +*)  newpat=`echo $1 |cut -c2-`; if [ -z "$pats" ]; then pats="-iname $n
ewpat"; else pats="-o -iname $newpat"; fi; ;;
        *)   query=$1; shift; break; ;;
    esac
    shift
done
rest=$*
 if [ -z "$pats" ]; then
  pats="-iname *.h -o -iname *.hpp -o -iname *.inc -o -iname *.c -o -iname
*.cpp -o -iname *.s -o -iname *.asm -o -iname *.java"
fi
 cmd="find ${root} ${pats} |xargs grep -n ${opts} '${query}' ${rest} ${browse}";
 #echo "Running:$cmd"
eval $cmd
 ----------------------------------------------
The Awakening
이름
암호
  목록보기 윗글 아랫글
글쓰기
답장쓰기 수정 삭제
정규표현식 [ 상세 검색 ]
페이지로딩: [ 1.16 초 ] 작업시간: [ 0.5 초 ]

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved
[TOP]

적수네 동네
+
| 적수네 동네
| 공부방
| 리눅스 잡지 서고
| LSN 소스
| 링크 모음
+---+
게시판
+
| 떠들어보세!
| 질문과 답변
| 새소식과 정보
| 1원짜리 팁?
| 대화방
+---+
칼럼?
+
| 세하 훔쳐보기
| Welcome2nite
| 혜진의 염장판
+---+
리눅스 상표권
+
| 반대 서명란
| 토론 게시판
+---+
GNU
+
| GNU 선언문
| GNU GPL
| GNU 미러 목록
+---+
프로젝트?
+
| 리눅스카운터
| RC5DES
| 실질헌법 제작
+---+
커널 소식
+
| 안정 버젼: 2.4.14
+---+
테마 선택
+
LSN 방송국?
+
| OFF AIR
+---+
회원
+
| 로그인
+---+
[ 적수네 동네 ] [ 리눅스 상표권 독점 반대 ] [ 한글 리눅스 문서 프로젝트 ] [ KrLine ] [ 사랑넷 ] [ Valid HTML 4.0! ] [ SlashDot ] [ Freshmeat ]
Copyleft (C) 1998-2001 Byeong-Chan Kim . License
TIME: 1791051753
System by WYZsoft, HDD by I.O.Linux, Mizi Research, Embryo, WOWLINUX, Domain by SarangNet, Network by KrLine.