Shell 拼写检查与词典操作

Shell 拼写检查与词典操作,大多数Linux发行版都含有一份词典文件。然而,我发现几乎没人在意过这个文件,拼写错误仍是满天飞。还有一个叫作aspell的命令行实用工具,其作用是进行拼写检查。让我们通过几个脚本来看看如何使用词典文件和拼写检查工具。

Shell拼写检查与词典操作

实战演练

目录/usr/share/dict/中包含了一些词典文件。所谓“词典文件”就是包含了单词列表的文本文件。我们可以利用它来检查某个单词是否在词典之中。

$ ls /usr/share/dict/
american-english  british-english

为了检查给定的单词是否为词典单词,可以使用下面的脚本:

#!/bin/bash
#文件名: checkword.sh
word=1
grep "^1" /usr/share/dict/british-english -q
if [? -eq 0 ]; then
  echo word is a dictionary word;
else
  echoword is not a dictionary word;
fi

这个脚本的用法如下:

$ ./checkword.sh ful
ful is not a dictionary word

$ ./checkword.sh fool
fool is a dictionary word

工作原理

grep中,^标记着单词的开始,$标记着单词的结束1-q选项 禁止grep产生任何输出。

1^匹配的是行首位置,$匹配的是行尾位置。因为词典文件中每行只有一个单词,故使用正则表达式^1匹配行中出现的完整单词。在该例中,从效果上来看,^$恰好分别对应了单词的起止位置,但要注意这两者并非单词分界符。

作为另一种选择,我们也可以用拼写检查命令aspell来核查某个单词是否在词典中:

#!/bin/bash
#文件名: aspellcheck.sh
word=1

output=`echo \"word\" | aspell list`

if [ -z output ]; then
        echoword is a dictionary word;
else
        echo $word is not a dictionary word;
fi

当给定的输入不是一个词典单词时,aspell list命令会生成输出,否则不产生任何输出。-z用于确认$output是否为空。

look命令可以显示出以特定字符串起始的行。你可以用它在日志文件中查找以特定日期为首的记录,或是在词典中查找以特定字符串开头的单词。look默认会搜索/usr/share/dict/words,你也可以给出文件供其搜索:

$ look word

或者使用

$ grep "^word" filepath

例如:

$ look android
android
android's
androids

在/var/log/syslog中找出以特定日期起始的日志记录:

$look 'Aug 30' /var/log/syslog

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程