linux命令行版有道词典
来源:互联网 发布:mysql数据库免安装版 编辑:程序博客网 时间:2024/05/12 15:15
搜素 shell 脚本做有趣的事时发现了一个非常给力的脚本,实现命令行翻译英文单词。
通过抓取有道词典网页代码,截取想要的信息,格式化输出到命令行。搞定!对柯林斯英汉双解大词典的内容比较偏爱,截取了他的释义和例句。
#!/bin/bashARGS=1E_BADARGS=65TEM_FILE="/tmp/dict.tmp"if [ $# -ne "$ARGS" ] then echo "Usage:`basename $0` word" exit $E_BADARGSfi# 抓取页面,删除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 linedo 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" fidone < $TEM_FILEecho -e "\033[31;1m$head\033[0m $body"exit 0
接下来我会对此脚本进行一些参数定制,比如设定例句的个数之类的。
0 0
- linux命令行版有道词典
- Linux命令行有道词典查询
- 有道词典工具(命令行+GUI)
- linux 词典安装,有道
- LInux下的有道词典
- Linux下安装有道词典
- linux下安装有道词典
- Python实现的命令行查询有道词典
- 有道词典(简单版)
- 有道词典
- 有道词典
- 有道词典
- 有道词典
- 有道词典
- 有道词典
- 有道词典
- 有道词典
- 有道词典
- 招聘要求汇总--安全方向
- mysql中count函数使用方法详解
- JSTL标签用法
- 启发式算法个人理解
- Oracle查询重复数据与删除重复记录方法
- linux命令行版有道词典
- 4月9日有感
- Java编程思想重点笔记(Java开发必看)...转
- 数据泵expdp,impdp使用结
- python格式化字符串和转义字符
- 2014编程之美挑战赛初赛题目
- maven总结
- PHP中extract()函数的妙用
- 队列的C++实现