shell查词典

curl http://cn.bing.com/dict/search?q=spawn -s | sed -e '{s/<\/span>/&\n/g}' | sed -n '{/<span class="def">/p}' | sed -e '{s/<span class="def"><span>//g}' | sed -e '{s/<\/span>//g}'

  

产卵;导致;引发;引起
(鱼、蛙等的)卵
再生侠;闪灵悍将;产生

  

 

daniel@daniel-mint ~ $ cat bing_dict.sh 
 curl http://cn.bing.com/dict/search?q=$1 -s | sed -e '{s/<\/span>/&\n/g}' | sed -n '{/<span class="def">/p}' | sed -e '{s/<span class="def"><span>//g}' | sed -e '{s/<\/span>//g}'

  

下面是测试结果:

daniel@daniel-mint ~ $ bash bing_dict.sh Daniel
丹尼尔;(旧约圣经)《但以理书》;有名法官;【男名】男子名
吴彦祖;陈晓东;达尼尔
daniel@daniel-mint ~ $ bash bing_dict.sh King 国王;大王;君主;…之王 统治;做国王;立…为王 金;王者;金恩
daniel@daniel-mint ~ $ bash bing_dict.sh is 是 (= 冰岛;在;印度标准(Indian Standard)
daniel@daniel-mint ~ $ bash bing_dict.sh a 一 英文字母表的第一字母;【乐】A音 冠以不定冠词主要表示类别 从;按;一个
daniel@daniel-mint ~ $ bash bing_dict.sh software 软件 软体;应用软件;计算机软件
daniel@daniel-mint ~ $ bash bing_dict.sh engineer 工程师;技师;工兵;技工 密谋策划;设计制造;改变…的基因(或遗传)结构 工程技术人员;轮机员;工程兵

  

缺点是查中文结果莫名其妙。

daniel@daniel-mint ~ $ bash bing_dict.sh 文学
毛郁金根茎的水提取物;鞋子;一个自动对焦
daniel@daniel-mint ~ $ bash bing_dict.sh 文
Scot
【摄】自动曝光
自动曝光(Auto Exposure);声发射(acoustic emission);客户主管(Account Executive)
daniel@daniel-mint ~ $ bash bing_dict.sh %E6%96%87%E5%AD%A6
<span class="def"><a href="/dict/search?q=literature&FORM=BDVSP6" h="ID=Dictionary,5010.1">literature</a>
<span class="def"><a href="/dict/search?q=literary&FORM=BDVSP6" h="ID=Dictionary,5011.1">literary</a><span>; 

  

需要转成Unicode码,并且重新设置过滤pattern。

 

加上音标的版本

daniel@daniel-mint ~ $ cat bing_dict.sh 
 curl http://cn.bing.com/dict/search?q=$1 -s | sed -e '{s/<\/span>/&\n/g}' | sed -n '{/<span class="def">/p
/<div class="hd_pr/p}' | sed -e '{s/<span class="def"><span>//g}' | sed -e '{s/<\/span>//g}' | sed -e '{s/.*\[/\[/g}' | sed -e '{s/\].*/\]/g}'

  

daniel@daniel-mint ~ $ bash bing_dict.sh orchestrate
['ɔː(r)kɪ.streɪt]
精心安排;编配(或创作管弦乐曲);策划;密谋
编管弦乐曲;组织;精心策划

  

转载于:https://www.cnblogs.com/long123king/p/3920138.html

通过抓取有道词典网页代码,截取想要的信息,格式化输出到命令行。搞定!对柯林斯英汉双解大词典的内容比较偏爱,所以我就截取了他的释义和例句。 #!/bin/bash ARGS=1 E_BADARGS=65 TEM_FILE="/tmp/dict.tmp" if [ $# -ne "$ARGS" ] then echo "Usage:`basename $0` word" exit $E_BADARGS fi # 抓取页面,删除html代码,空行等,只留下想要的内容 curl -s 'http://dict.youdao.com/search?q='$1'' | awk 'BEGIN{j=0;i=0;} {if(/phrsListTab/){i++;} if(i==1){print $0; if(/<\/ul>/){i=0;}} if(/collinsToggle/){ j++;} if(j==1) {print $0; if(/<\/ul>/){j=0;}}}' | sed 's/<[^>]*>//g' | sed 's/ //g'| sed 's/→//g' | sed 's/^\s*//g' | sed '/^$/d'> $TEM_FILE # 处理输出 is_head=true # 当前行是否属于“头部” head="" # 头部内容 body="" # 主体内容 ln_item=0 # 每一条解释的行号 ln_eg=0 # 例句行号 while read line do let ln_item++ let ln_eg++ num_flag=`echo "$line" | awk '/[0-9]+\.$/'` if [ "$num_flag" != "" ]; then ## 遇见'数字+点'开头的行 is_head=false # 第一次遇见数字行 将头部标示设置为false ln_item=0 fi eg_flag=`echo "$line" | awk '/例:$/'` # 遇见'例:'开头的行 if [ "$eg_flag" != "" ]; then ln_eg=0 fi if $is_head ; then head="$head $line" else if [ $ln_item == 0 ] ; then line="\033[32;1m\n\n$line\033[0m" # 释义编号 elif [ $ln_item == 1 ] ; then line="\033[32;1m[$line]\033[0m" # 词性 elif [ $ln_item == 2 ] ; then line="\033[1m$line\033[0m" # 释义 elif [ $ln_eg == 0 ] ; then line="\033[32;1m\n $line\033[0m" # 例: elif [ $ln_eg == 1 ]; then line="\033[33m$line\033[0m" # 例句 elif [ $ln_eg == 2 ]; then line="\033[33m$line\033[0m" # 例句释义 fi body="$body $line" fi done < $TEM_FILE echo -e "\033[31;1m$head\033[0m $body" exit 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值