2.13 拼写检查与词典操作
Linux大多数的发行版都含有一份词典文件。然而,我发现几乎没人在意过这个文件,更别提使用它了。另外,有一个被称为aspell的命令行工具,其作用是进行拼写检查。让我们通过一些脚本,看看如何使用词典文件和拼写检查工具。
2.13.1 实战演练
目录 /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
echo $word is not a dictionary word;
fi
这个脚本的用法如下:
- $ ./checkword.sh ful
- ful is not a dictionary word
- $ ./checkword.sh fool
- fool is a dictionary word
2.13.2 工作原理
在grep
中,^
标记着单词的开始,$
标记着单词的结束。
-q
禁止产生任何输出。
另外,我们也可以用拼写检查命令aspell
来核查某个单词是否在词典中:
#!/bin/bash
#文件名: aspellcheck.sh
word=$1
output=`echo \"$word\" | aspell list`
if [ -z $output ]; then
echo $word is a dictionary word;
else
echo $word is not a dictionary word;
fi
当给定的输入不是一个词典单词时,aspell list
命令产生输出文本,反之则不产生任何输出。-z
用于确认 $outpu
是否为空。
列出文件中以特定单词起头的所有单词:
- $ look word filepath
或者使用
- $ grep "^word" filepath
在默认情况下,如果没有给出文件参数,look
命令会使用默认词典(/usr/share/dict/words)并返回输出。
- $ look word
- # 像这样使用时,look命令以默认词典作为文件参数
例如:
- $ look android
- android
- android's
- androids