2.13 拼写检查与词典操作

Linux大多数的发行版都含有一份词典文件。然而,我发现几乎没人在意过这个文件,更别提使用它了。另外,有一个被称为aspell的命令行工具,其作用是进行拼写检查。让我们通过一些脚本,看看如何使用词典文件和拼写检查工具。

2.13.1 实战演练

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

  1. $ ls /usr/share/dict/
  2. american-english british-english

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

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

这个脚本的用法如下:

  1. $ ./checkword.sh ful
  2. ful is not a dictionary word
  3.  
  4. $ ./checkword.sh fool
  5. fool is a dictionary word

2.13.2 工作原理

grep中,^ 标记着单词的开始,$ 标记着单词的结束。

-q 禁止产生任何输出。

另外,我们也可以用拼写检查命令aspell来核查某个单词是否在词典中:

  1. #!/bin/bash
  2. #文件名: aspellcheck.sh
  3. word=$1
  4. output=`echo \"$word\" | aspell list`
  5. if [ -z $output ]; then
  6. echo $word is a dictionary word;
  7. else
  8. echo $word is not a dictionary word;
  9. fi

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

列出文件中以特定单词起头的所有单词:

  1. $ look word filepath

或者使用

  1. $ grep "^word" filepath

在默认情况下,如果没有给出文件参数,look命令会使用默认词典(/usr/share/dict/words)并返回输出。

  1. $ look word
  2. # 像这样使用时,look命令以默认词典作为文件参数

例如:

  1. $ look android
  2. android
  3. android's
  4. androids