Командная строка Linux
Шрифт:
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>
The quick brown fox jimped over the laxy dog.
</body>
</html>
Если теперь попытаться проверить орфографию в измененном файле, мы столкнемся с проблемой. Вызвав команду
[me@linuxbox ~]$ aspell check foo.txt
мы получим следующее:
<html>
<head>
<title>Mispelled HTML file</title>
</head>
<body>
The quick brown fox jimped over the laxy dog.
</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
[me@linuxbox ~]$ aspell -H check foo.txt
Теперь результат будет выглядеть так:
<html>
<head>
<title>Mispelled HTML file</title>
</head>
<body>
The quick brown fox jimped over the laxy dog.
</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.
Заключительное замечание
В этой главе мы познакомились с несколькими из множества инструментов командной строки для обработки текста. В следующей главе мы рассмотрим еще несколько. Нужно признать, что для многих из вас пока не очевидно, как или для чего можно было бы использовать некоторые из них в повседневной работе, хотя мы попытались привести практические примеры. В следующих главах вы увидите, что эти инструменты формируют базовый набор для решения большого количества практических задач. Это вам пригодится, когда мы перейдем к сценариям на языке командной оболочки, где эти инструменты по-настоящему продемонстрируют свои возможности.