find ./ \( -name '*.xrw' -o -name '*.js' \) | sed -e 's/^/\"/' -e 's/$/\"/' | xargs grep -n "modal*(" | sed -e 's/ //g' -e 's/ //g' -e 's/:/ /' -e 's/:/ /' | grep -v " //"
- 위 명령어의 목적.
- xrw와 js 확장자를 가진 파일 중에 modal()이란 명령어를 포함한 항목을 모두 검색한다.
- 단, 주석처리 된 항목들은 검색대상에서 제외되어야 한다.
이를 위해 이래저래 꼼수부린 명령어.
1. find로 여러 확장자 찾기.
find ./ \( -name '*.xrw -o -name '*.js' \)
포인트는 괄호앞에 역슬래쉬(\)를 붙여야 한다는것. 그리고 역슬래쉬 다음엔 공백 다음에 -name 옵션을 붙여야 한다는것.
그리고 -0 는 or와 같은 역할을 -a 는 and와 같은 역할을 한다는 것.
2. sed 활용
검색결과에 대한 가공을 통해 파일 저장하고 편집하기 쉽도록 주로 replace 기능만 사용. 실제로는 더 많은 기능을 할 수 있다.
필요한 것만 하면 되니까. ㅎㅎ
1). sed -e 's/^/\"/' -e 's/$/\"/'
2). sed -e 's/ //g' -e 's/ //g' -e 's/:/ /' -e 's/:/ /'
1) find로 실행된 검색결과 앞뒤로 큰따옴표를 입력한다. 이유는 파일명에 공백이 포함되어있을 경우 parameter 처럼 구분이 되어져버리기 때문이다.
2) -e 옵션이 순차적으로 하나씩 적용된다. TAB을 제거 -> 공백제거 -> 첫번째 세미콜론을 TAB으로 변경 -> 두번째 세미콜론을 TAB으로 변경
TAB으로 변경하는 이윤 뭐.. 엑셀편집 편하라고..
3. xargs와 grep
1) xargs grep -n "modal*("
2) grep -v " //"
1) xargs와 grep을 통해 검색된 파일 내부에 해당 키워드가 포함된 열의 내용과 행번호(-n옵션)를 표시해준다.
2) sed에 가공된 항목들 중에 TAB+// 가 포함된 문장들은 제외를 시킨다.
결과에 대한 만족도
어느 정도 기초데이터는 뽑은 것 같아 만족스럽긴 하지만 확실히 모르겠다.
소스의 위치와 해당 키워드가 존재하는 행. 그리고 내용. ;;;
다 들어있는데 왠지 깔끔하지 못하다는 기분이랄까.. 맘 같아선 중복항목들이 있는지까지 체크해보고 싶은데..
그럴려면 shellscript를 만들어야 하는데.. 그게 시간이 더 걸릴 것 같구..
다시 엑셀로 편집해야 한다는 점에선 그닥 만족스럽지 못하다.
eclipse 이런 자료 뽑을 수 있는 plugin 같은 건 없나?
키워드들 중에서 주석처리된 애들은 제외시켜주고 패턴에 맞게 검색결과 편집할 수 있게 해주고. ㅋ
에효~
수정버전
find ./ \( -name '*.xrw' -o -name '*.js' \) | sed -e 's/^/\"/' -e 's/$/\"/' | xargs grep 'modal'| sed -e 's/ //g' -e 's/ //g' |grep -v ':\/' | grep '[:\.]modal(\"' | sed -e 's/.\///' -e 's/\// /' -e 's/:/ /'
modal을 포함한 모든 문자열을 검색하고 모든 공백과 TAB을 지운 다음 처음 나타나는 콜론(:)바로 앞에 슬래쉬(/)가 있는 항목을 제외한다.
그리고 modal이라는 글자 앞에 콜론이나 .이 있거나 modal 뒤에 (" 가 있는 항목만 보여준다. 공백, 탭을 모두 제거했으므로 함수라는 특성상 함수앞뒤엔 공백과 탭이 올 수 없으므로 그 사이에 슬래쉬나 기타 다른 문자가 끼어있으면 정상동작하지 않는 함수로 간주한다.
'ETC' 카테고리의 다른 글
Window Sysinternals (0) | 2013.01.16 |
---|---|
Internet Explorer9에서 "text/plain" Content Type 변경 (0) | 2012.12.14 |
rcp (0) | 2012.10.29 |
OPTIMIZER (0) | 2012.10.15 |
TortoiseSVN Command (1) | 2012.10.09 |