Последний инструмент, который мы рассмотрим в этой главе, — программа aspell, интерактивное средство проверки орфографии. Программа aspell является преемницей программы ispell, существовавшей прежде, и может использоваться как ее замена. Чаще всего программа aspell используется другими программами в тех случаях, когда необходима функция проверки орфографии, однако aspell может также весьма эффективно использоваться как самостоятельный инструмент командной строки. Она способна проверять текстовые файлы разных типов, включая документы HTML, программы на C/C++, электронные письма и другие специальные виды текста.
Чтобы проверить орфографию в файле с простым текстом, можно вызвать aspell, как показано ниже:
aspell check текстовый_файл
где текстовый_файл — это имя файла для проверки. В качестве практического примера создадим простой текстовый файл с именем foo.txt, содержащий несколько произвольных орфографических ошибок:
[me@linuxbox ~]$ cat > foo.txt
The quick brown fox jimped over the laxy dog.
Затем проверим файл с помощью aspell:
[me@linuxbox ~]$ aspell check foo.txt
Поскольку в режиме проверки (check) программа aspell действует интерактивно, вы увидите следующий экран:
The quick brown fox jimped over the laxy dog.
______________________________________________________________
1) jumped 6) wimped
2) gimped 7) camped
3) comped 8) humped
4) limped 9) impede
5) pimped 0) umped
i) Ignore I) Ignore all
r) Replace R) Replace all
a) Add l) Add Lower
b) Abort x) Exit
______________________________________________________________
?
В верхней части экрана выводится текст с выделенным подозрительным словом. В середине — 10 вариантов исправления ошибки, пронумерованных от 0 до 9, а затем следует список других возможных действий. Наконец, в самом низу выводится приглашение к вводу, готовое принять наш выбор.
Если ввести 1, aspell заменит подозрительное слово jimped словом jumped и перейдет к следующему подозрительному слову, laxy. Если выбрать вариант замены lazy, aspell выполнить подстановку и завершится (так как ошибок во введенной фразе больше нет). После того как aspell завершится, заглянем в файл и увидим, что все ошибки исправлены:
[me@linuxbox ~]$ cat foo.txt
The quick brown fox jumped over the lazy dog.
Если вызвать программу aspell без параметра --dont-backup, она создаст резервную копию файла с исходным текстом, добавив к имени файла расширение .bak.
А теперь похвастаемся умением пользоваться программой sed и вернем наши ошибки на место, чтобы продолжить эксперименты с нашим файлом:
[me@linuxbox ~]$ sed -i 's/lazy/laxy/; s/jumped/jimped/' foo.txt
Параметр -i сообщает программе sed, что требуется отредактировать файл «на месте», в том смысле, что изменения нужно произвести в самом файле, а не переслать их в стандартный вывод. Здесь также показана возможность передать более одной команды редактирования, разделив их точкой с запятой.
Далее мы посмотрим, как aspell справляется с текстовыми файлами разных видов. С помощью текстового редактора, например vim (наиболее смелые могут попробовать использовать sed), добавим в файл немного разметки HTML:
The quick brown fox jimped over the laxy dog.