sed & awk / sed & awk: 1.1 Возможность решать интересные задачи
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
Основной причиной sed и awk в том, что они применимы для разработки решений редактирования текста.[1] Для некоторых людей, включая меня, радость от решения проблем является разностью между работой и тяжелой работой. Выбор между использования vi или sed для внесения ряда повторяющихся изменений в ряде файлом, я выберу sed, просто по тому, что это создает проблемы, интересные для меня. Я перерабатываю решения вместо повторений комбинаций клавиш. Кроме того, раз я выполняю задания, я поздравляю себя с тем что умнею. Я чувствую, что сделал небольшое волшебство и избали себя от скучного труда. r0mk 27.08.12 в 05:38 |
|
|
[1] Я пологаю, что этот раздел является комбинацией старого китайского проклятья “ Чтоб тебе жить в интересные времена” и тем, что мне сказал Tim O'Reilly, кто нибудь решит проблему если он найдет более интересную проблему. r0mk 27.08.12 в 05:39 |
||
|
Первоначально, использование sed и awk выглядело как длинный путь выполнения задач. После нескольких попыток вы можете решить, что задание проще было бы выполнить вручную. Будьте терпеливы. Вы не только изучаете как использовать sed и awk, но вы также учитесь распознавать ситуации когда их использование окупается. Когда вы станите более опытным, вы будете решать проблемы намного быстрей и решите более широкий круг проблем. r0mk 27.08.12 в 05:39 |
||
|
Вы также увидите возможности для поиска единых решений для специфичных проблем. Это способ взглянуть на проблемы, позволяющий их объединять в группы. Вы можете разработать решение, которое может быть повторно использовано в других ситуациях. r0mk 31.08.12 в 09:58 |
||
|
Разрешите показать вам пример(без показа програмного кода). Одна из наших книг использует систему перекрестных сслылок, в которой каждая ссылка была определена и обработана нашей программой для форматирования.(sqtroff). В текстовом файле ссылки на главу на обработку ошибок могут быть описаны так: r0mk 31.08.12 в 10:05 |
||
|
"CHerrorhand" - так называется ссылка "\ * [" и "]" называют последовательности, которые отличают ссылку от остального текста. В основном файле имена используются для перекрестных ссылок в документе и определяются как sqtroff строки. Например, "CHerrorhand" определяен в "Глава 16, обработка ошибок".(Преимущество использования схемы символических перекрестных ссылок, вместо явных ссылок в том, что если глава была добавлена или удалена или перемещена, то только основной файл должен быть изменен, в соответствии с новой организацией) Когда программа форматирования текста обрабатывает докумен, ссылки разрешаются и разширяются должным образом. r0mk 15.09.12 в 14:55 |
+1 | |
|
Проблема, с которой мы столкнулись, была в том, что мы использовали один и тот же файл для создания и онлайн версии книги. Поэтому наше sqtroff форматирующая программа не могла быть использована, нам нужен был спосмоб для расширения перекрестных ссылок в файлах. Другими словами, мы не хотели, чтобы файлы содержали "\*[CHerrorhand]"; вместо этого мы хотели того, что называют "CHerrorhand". r0mk 15.09.12 в 14:59 |
||
|
Было три возможных способа решения проблемы: r0mk 04.09.12 в 11:10 |
||
|
1. Использовать текстовый для поиска всех ссылок и замены каждой из них на соответствующую строку r0mk 04.09.12 в 11:25 |
||
|
2. Использовать sed для редактирования. Это аналогичкно редактированию вручную, только быстрей. r0mk 04.09.12 в 11:26 |
||
|
3. Использовать awk для написания програмы которая (а) читает основной файл для создания списка ссылок и их значений, (б) чтение документа и поиска ссылок вызывающих последовательность, и (с) просмотра имени сслыки из списка и замены на его значение r0mk 04.09.12 в 11:37 |
||
|
Первый способ, очевидно, слишком долгий( и не инетересный). Второй способ использует sed, преимущество в том ,что он создает инструмент для выполнения работы. Это красиво и просто sed скрипт, который будет искать "\*[CHerrorhand]" и заменять на "Глава 16, Обработка Ошибок", для примера. Этот же скрипт может быть использован для изменениея остальных файлов в документе. Недостатком является, то, что для замены каждной перекрестной ссылки необходимо писать команду для замены. Третий метод использует awk, создаем инструмент, который работает с любыми перекрестными ссылками встречающимися в синтаксисе. Этот скрипт может быть использован для расширения перекрестных ссылок в других книгах. Он позволяет Вас создать список определенных замен. Это наиболее полное решение из трех и сделано для наилучшего повторного использования. r0mk 16.09.12 в 11:20 |
||
|
Часть решения проблемы - знать какой инструмент использовать. Это время, когда sed скрипт лучший выбор потому, что проблема не поддается, или требует болле сложного awk скрипта. Вам следует подумать, какое приложение будет лучше в данной ситуации sed или awk r0mk 04.09.12 в 11:40 |
