linux 有道词典

Linux下的有道词典:必须联网才能查词

命令格式:youdao空格单词

命令案例:youdao love

sudo vim  /usr/local/bin/youdao
sudo chmod + x /usr/local/bin/youdao 
#下载或复制文件 将其存放在 /usr/local/bin目录下并名为:youdao 并赋予可执行权限 chmod + x /usr/local/bin/youdao
#!/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/&nbsp;//g'| sed 's/&rarr;//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]+\.$/'`
    #num_flag1=`echo "$line" | awk '/[0-9]+\.$/'`
    #echo "$num_flag1"
    
    # 下面的3.表示只要两个例句 如果想要4个例句可以将3.修改为4.以此类推
    if [ "$num_flag" == "3." ]; then 
break
#done < $TEM_FILE
    fi
    
    if [ "$num_flag" != "" ]; then ## 遇见'数字+点'开头的行
        is_head=false # 第一次遇见数字行  将头部标示设置为false
        ln_item=0
    fi
 
    eg_flag=`echo "$line" | awk '/例:$/'` # 遇见'例:'开头的行
    #echo "$eg_flag"
    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、付费专栏及课程。

余额充值