Готовый перевод sed & awk / sed & awk: 1.1 Возможность решать интересные задачи

Внимание! Этот перевод, возможно, ещё не готов, так как модераторы установили для него статус «перевод редактируется»

Основной причиной sed и awk в том, что они применимы для разработки решений редактирования текста.[1] Для некоторых людей, включая меня, радость от решения проблем является разностью между работой и тяжелой работой. Выбор между использования vi или sed для внесения ряда повторяющихся изменений в ряде файлом, я выберу sed, просто по тому, что это создает проблемы, интересные для меня. Я перерабатываю решения вместо повторений комбинаций клавиш. Кроме того, раз я выполняю задания, я поздравляю себя с тем что умнею. Я чувствую, что сделал небольшое волшебство и избали себя от скучного труда.

[1] Я пологаю, что этот раздел является комбинацией старого китайского проклятья “ Чтоб тебе жить в интересные времена” и тем, что мне сказал Tim O'Reilly, кто нибудь решит проблему если он найдет более интересную проблему.

Первоначально, использование sed и awk выглядело как длинный путь выполнения задач. После нескольких попыток вы можете решить, что задание проще было бы выполнить вручную. Будьте терпеливы. Вы не только изучаете как использовать sed и awk, но вы также учитесь распознавать ситуации когда их использование окупается. Когда вы станите более опытным, вы будете решать проблемы намного быстрей и решите более широкий круг проблем.

Вы также увидите возможности для поиска единых решений для специфичных проблем. Это способ взглянуть на проблемы, позволяющий их объединять в группы. Вы можете разработать решение, которое может быть повторно использовано в других ситуациях.

Разрешите показать вам пример(без показа програмного кода). Одна из наших книг использует систему перекрестных сслылок, в которой каждая ссылка была определена и обработана нашей программой для форматирования.(sqtroff). В текстовом файле ссылки на главу на обработку ошибок могут быть описаны так:

"CHerrorhand" - так называется ссылка "\ * [" и "]" называют последовательности, которые отличают ссылку от остального текста. В основном файле имена используются для перекрестных ссылок в документе и определяются как sqtroff строки. Например, "CHerrorhand" определяен в "Глава 16, обработка ошибок".(Преимущество использования схемы символических перекрестных ссылок, вместо явных ссылок в том, что если глава была добавлена или удалена или перемещена, то только основной файл должен быть изменен, в соответствии с новой организацией) Когда программа форматирования текста обрабатывает докумен, ссылки разрешаются и разширяются должным образом.

Проблема, с которой мы столкнулись, была в том, что мы использовали один и тот же файл для создания и онлайн версии книги. Поэтому наше sqtroff форматирующая программа не могла быть использована, нам нужен был спосмоб для расширения перекрестных ссылок в файлах. Другими словами, мы не хотели, чтобы файлы содержали "\*[CHerrorhand]"; вместо этого мы хотели того, что называют "CHerrorhand".

Было три возможных способа решения проблемы:

1. Использовать текстовый для поиска всех ссылок и замены каждой из них на соответствующую строку

2. Использовать sed для редактирования. Это аналогичкно редактированию вручную, только быстрей.

3. Использовать awk для написания програмы которая (а) читает основной файл для создания списка ссылок и их значений, (б) чтение документа и поиска ссылок вызывающих последовательность, и (с) просмотра имени сслыки из списка и замены на его значение

Первый способ, очевидно, слишком долгий( и не инетересный). Второй способ использует sed, преимущество в том ,что он создает инструмент для выполнения работы. Это красиво и просто sed скрипт, который будет искать "\*[CHerrorhand]" и заменять на "Глава 16, Обработка Ошибок", для примера. Этот же скрипт может быть использован для изменениея остальных файлов в документе. Недостатком является, то, что для замены каждной перекрестной ссылки необходимо писать команду для замены. Третий метод использует awk, создаем инструмент, который работает с любыми перекрестными ссылками встречающимися в синтаксисе. Этот скрипт может быть использован для расширения перекрестных ссылок в других книгах. Он позволяет Вас создать список определенных замен. Это наиболее полное решение из трех и сделано для наилучшего повторного использования.

Часть решения проблемы - знать какой инструмент использовать. Это время, когда sed скрипт лучший выбор потому, что проблема не поддается, или требует болле сложного awk скрипта. Вам следует подумать, какое приложение будет лучше в данной ситуации sed или awk

Внимание! Этот перевод, возможно, ещё не готов.
Его статус: перевод редактируется

Переведено на Нотабеноиде
http://notabenoid.org/book/32181/112608

Переводчики: r0mk

Настройки

Готово:

100.00% КП = 1.0