awk, sed, w3m을 이용한 vim용 영어 사전.. -_-;;

모처럼 awk 를 다시 공부해 볼려고 하다가 재미난 부분을 찾게 되었습니다.
일단 출처는 http://kldp.org/node/93418의 댓글중에서 보았습니다.

그래서 이것저것 보면서 정리를 한번 해보기 위해 작성하는 글타래.. -_-;

w3m -dump "http://kr.dictionary.search.yahoo.com/search/dictionaryp?p=$1&subtype=eng" 2> /dev/null \
| awk 'BEGIN { flg = 0 } /더 많은 검색결과/ || /영어표현/ { flg = 0 } \
{ if (flg) print $0 } /영한$/ { flg = 1 }' \
| sed 's/\[.*\]//g' \
| sed 's/•//g' \
| sed 's/단어장에 추가//g' \
| sed 's/단어장에//g' \
| sed -e 's/^추가//g' \
| sed '/^$/d'

뭐.. .간단하게 설명하자면

1. w3m이라는 텍스트 베이스로 웹의 내용을 받아올 수 있는 command를 사용하여 주소에서 $1이라는 input argument 에 해당하는 단어를 찾아옵니다.
2. "더 많은 검색 결과" 또는 "영어표현"이라는 단어가 읽어온 라인에 있으면 flg값을 0으로 세팅
3. "영한"으로 끝난 단어가 나오면 flg값을 1로 세팅
4. flg값이 1인 경우에만 받아온 내용을 출력
5. sed라는 text editor를 이용하여 출력할 내용을 편집

이렇게 되는군요..ㅎㅎ;;
sed에서 사용하는 표현들은 regular expression들입니다...

regular expression에 관련된 내용은 vi에서 :help regular 하면 쫘~악 나옵니다.. -_-;;

위와 같이 하여 생성된 파일을 shell script로 저장하여 사용하여
.vimrc에 매핑하여 사용하면 아주 편리합니다..ㅎㅎ;;

func! DictionaryYahoo()
    let word = expand("<cword>")
    exec "!dictory_yahoo.sh" word
    set nomod wrap
endfunc

nmap ,dn :call DictionaryYahoo()

vimrc에서 사용하는 func()은 항상 대문자로 시작되어야 하며,
expand에서 리턴하는 값은 string type으로 저장됩니다.
expand는 어떤 특정한 키워드를 사용하여 string값을 리턴받는 함수입니다.

위에서 사용한 <cword> keyword는 커서 위치의 단어에 대한 키워드입니다.


다른 키워드에 대한 정보는 마찬가지로 vim에서 :help expand 치면 나옵니다... ^^;

nmap이란 특정 입력에 대해서 어떤 동작을 하라고 정의하는 매크로(?)라고 보시면 되겠습니다.

사용법은 nmap 입력키 :action

의 형식이 됩니다.



두번째 그림의 world라는 단어에 커서를 두고 ,dn을 치게 되면 마지막 그림과 같이 뜻을 웹에서 긁어와서 뿌려주게 됩니다.

알면 알수록 무궁무진한 능력을 보여주니.. 빠져들지 않을 수가 없군요.. -_-;

by 아비숑 | 2008/05/19 16:29 | IT Life | 트랙백(1) | 덧글(0)

트랙백 주소 : http://mirr187.egloos.com/tb/1714100
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from at 2014/03/11 00:28

제목 : garcinia cambogia
line1...more

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶



'="text/javascript" src="http://allblet2.allblog.net/allblet2.js">');