linux then多条命令,linux命令行版有道词典
发布日期:2021-06-27 04:24:36 浏览次数:14 分类:技术文章

本文共 1339 字,大约阅读时间需要 4 分钟。

#!/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(//){i=0;}} if(/collinsToggle/){ j++;} if(j==1) {print $0; if(//){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

转载地址:https://blog.csdn.net/weixin_42166105/article/details/116601235 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Linux中的用户是干什么的,Linux系统中有效用户组和初始用户组有什么作用于区别?...
下一篇:win7重新配置oracle监听,win7系统oracle监听服务无法打开的解决方法

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月17日 11时38分41秒