做完了上面的第25、26个脚本后,我们想要自己手动增加一个本地词典,这样就不用在每次遇到一个新的单词后,都会一遍遍的报错了。

代码:

 1 #!/bin/sh
 2
 3 # spelldict.sh -- 使用'aspell'特性以及一些过滤以便
 4 # 允许命令行拼写检查给定的输入文件
 5
 6 # 不可避免的,你会发现,有些词汇是错误的,但你认为
 7 # 它们是正确的。简单的将它们保存在一个文件中,一次
 8 # 一行,并且确定变量'okaywords'指向这个文件。
 9
10 okaywords="$HOME/okaywords"
11 tempout="/tmp/spell.tmp.$$"
12 spell="aspell"    # 根据需要修改
13
14 trap "/bin/rm -f $tempout" EXIT
15
16 if [ -z "$1" ]; then
17     echo "Usage: spell file | URL" >&2
18     exit 1
19 elif [ ! -f $okaywords ]; then
20     echo "No personal dictionary found. Create one and return this command." >&2
21     echo "Your dictionary file: $okaywords" >&2
22     exit 1
23 fi
24
25 for filename
26 do
27     $spell -a < $filename | \
28     grep -v '@(#)' | sed "s/\'//g" | \
29         awk '{if(length($0) > 15 && length($2) > 2) print $2}' | \
30     grep -vif $okaywords | \
31     grep '[[:lower:]]' | grep -v '[[:digit:]]' | sort -u | \
32     sed 's/^/ /' > $tempout
33
34     if [ -s $tempout ]; then
35         sed 's/^/${filename}: /' $tempout
36     fi
37 done
38
39 exit 0

运行脚本:
这个脚本需要在命令行上提供一个或多个文件名

运行结果:

首先,一个空的个人字典,txt内容摘录自爱丽丝漫游记:
$ spelldict ragged.txt
ragged.txt:    herrself
ragged.txt:    teacups
ragged.txt:    Gryphon
ragged.txt:    clamour 有两个词拼错了,所以准备用echo命令把它们加到okaywords文件中:$ echo "Gryphon" >> ~/.okaywords
$ echo "teacups" >> ~/.okaywords 扩展了词典文件后的检查结果如下:$ spelldict ragged.txt
ragged.txt:    herrself
ragged.txt:    clamour 

ps: 这3章的单词检查,对我个人而言真的很无趣。期待后续的精彩脚本吧。

转载于:https://www.cnblogs.com/lalala23456/archive/2013/01/07/2848788.html

第三章:Creating Utilities--27.增加一个本地词典相关推荐

  1. 读书笔记: C# 7.0 in a nutshell (第 三 章 Creating Types in C#)

    内容: 第三章: C#中创建类型 类 继承 object类型 struct 访问修饰符 接口 枚举 嵌套类 泛型 1. Classes 典型的class定义: class YourClassName ...

  2. 优惠券系统-第三章-活动中心

    优惠券系统-第三章介绍 本文主要设计一个基于送券,送积分等的活动中心. 活动中心设计 活动中心主要是有各种活动,比如双十一活动,可能参加一个活动会送多个优惠券,某一个活动送大礼包还可能包含了积分(类似 ...

  3. 第2章 创建你的第一个 LISP 程序 Creating Your First Lisp Progr

    2019独角兽企业重金招聘Python工程师标准>>> 第2章 创建你的第一个 LISP 程序 Creating Your First Lisp Program 翻译者:FreeBl ...

  4. C# 线程手册 第三章 使用线程 实现一个数据库连接池(实战篇)

    在企业级软件开发过程中,为了改善应用程序的性能需要通常使用对象池来控制对象的实例化.例如,在我们每次需要连接一个数据库时都需要创建一个数据库连接,而数据库连接是非常昂贵的对象.所以,为了节省为每次数据 ...

  5. )类 新建javafx程序时_第三章 第一个OpenCV的JavaFX应用程序.md

    # 第三章 第一个OpenCV的JavaFX应用程序 --- ***注意***:我们假设您现在已经阅读了之前的教程.如果没有,请在[http://opencv-java-tutorials.readt ...

  6. 【蓝桥杯嵌入式主板G4】第三章 点亮一个LED

    第一节 硬件解读 任何一个实验都是从点亮一个LED开始的,本次将教大家如何用stm32cubeMX+MDK在蓝桥杯嵌入式主板上面点亮一个LED. 先看蓝桥杯嵌入式主板的原理图:从图中可以看出一共有8个 ...

  7. 开发一个简单网站--第三章:相知

    第三章:相知 <12>.搜索用户search.php <13>.搜索用户后台getsearchdata.php <14>.搜索论坛(投票)fourum.php &l ...

  8. 【人工智能简史】第三章 第一个AI研究的黄金时代

    目录 ​编辑 第三章 第一个 AI 研究的黄金时代 第一节:早期 AI 研究的背景与突破

  9. 给定一个函数做其最佳平方逼近c语言,第三章 函数逼近 — 最佳平方逼近.

    第三章 函数逼近 - 最佳平方逼近 内容提要 最佳平方逼近 最佳平方逼近函数.多项式 利用正交多项式计算最佳平方逼近多项式 Chebyshev 级数与最佳一致逼近 最佳平方逼近 什么是最佳平方逼近 设 ...

最新文章

  1. 基于TPF111芯片的交流信号幅值检测
  2. 在SDN走向商用部署的路上,锐捷网络一直在不断实践
  3. Pandas简明教程:四、Pandas数据索引方式
  4. 云视睿博流媒体服务器Lit,《云视睿博流媒体服务器参数表.docx
  5. python解决最优化问题_python实现最优化算法
  6. 构建高性能ASP.NET站点 第六章—性能瓶颈诊断与初步调优(下前篇)—简单的优化...
  7. vue项目引入CNZZ数据专家(方法汇总篇)
  8. android用IO实现日记的读写,android开发实现文件读写
  9. 嵌入式软件开发好,还是硬件开发好?
  10. 常见的windows 命令大全
  11. Meshing Tutorials(网格划分教程)
  12. 2017 EC-Final A Chat Grou
  13. 微信小程序赞赏功能,非微信赞赏功能
  14. Linux环境下使用阿里云盘
  15. yigo2.0定时器集合
  16. java 给pdf文档加水印
  17. So easy!非技术人员也能学会的土狗防骗技巧!
  18. vue打包上线的代理问题
  19. oracle连接另外一个oracle,Oracle 连接 另一个Oracle数据库 服务器连接
  20. 【zt】克服当众怕羞的心理1

热门文章

  1. 随机生成一个质数的python代码_使用质数生成随机密码
  2. 编写ShellCode
  3. 如何通俗理解beta分布?
  4. Linux一些经典书籍
  5. CF-567F(President and Roads) DAG必经边
  6. HDU-5249 KPI(STL or 权值线段树)
  7. mysql删除表命令语句_MySQL增删改查语句命令(一)
  8. 折纸机器人的步骤图解_儿童节特辑丨为你精选二十款超好玩的折纸玩具,这么多总有你的菜!...
  9. warning: ISO C++ forbids converting a string constant to ‘char*‘ [-Wwrite-strings]
  10. mysql如何explan优化sql_《MySQL数据库》MySQL 优化SQL(explain)