aspell — интерактивная проверка орфографии

Последний инструмент, который мы рассмотрим в этой главе, — программа 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:

<html>

<head>

<title>Mispelled HTML file</title>

</head>

<body>

<p>The quick brown fox jimped over the laxy dog.</p>

</body>

</html>

Если теперь попытаться проверить орфографию в измененном файле, мы столк­немся с проблемой. Вызвав команду

[me@linuxbox ~]$ aspell check foo.txt

мы получим следующее:

<html>

<head>

<title>Mispelled HTML file</title>

</head>

<body>

<p>The quick brown fox jimped over the laxy dog.</p>

</body>

</html>

______________________________________________________________

1) HTML 4) Hamel

2) ht ml 5) Hamil

3) ht-ml 6) hotel

i) Ignore I) Ignore all

r) Replace R) Replace all

a) Add l) Add Lower

b) Abort x) Exit

______________________________________________________________

?

aspell посчитала, что HTML-теги записаны с ошибками. Эту проблему можно преодолеть, передав параметр -H (HTML) режима проверки:

[me@linuxbox ~]$ aspell -H check foo.txt

Теперь результат будет выглядеть так:

<html>

<head>

<title>Mispelled HTML file</title>

</head>

<body>

<p>The quick brown fox jimped over the laxy dog.</p>

</body>

</html>

______________________________________________________________

1) Mi spelled 6) Misapplied

2) Mi-spelled 7) Miscalled

3) Misspelled 8) Respelled

4) Dispelled 9) Misspell

5) Spelled 0) Misled

i) Ignore I) Ignore all

r) Replace R) Replace all

a) Add l) Add Lower

b) Abort x) Exit

______________________________________________________________

?

Теперь теги HTML игнорируются, и проверке подвергаются только фрагменты файла, не являющиеся частью разметки. В этом режиме содержимое HTML-тегов игнорируется и не проверяется, исключение составляет содержимое тегов ALT (точнее, атрибутов alt), которое будет проверяться в этом режиме проверки.

ПРИМЕЧАНИЕ

По умолчанию aspell игнорирует адреса URL и электронной почты в тексте. Эту ситуацию можно изменить с помощью параметров командной строки. Также можно указать, какие теги разметки должны проверяться, а какие пропускаться. За подробностями обращайтесь к странице справочного руководства (man) для aspell.