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

Оглавление
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

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

r0mk 27.08.12 в 05:38

0

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

r0mk 27.08.12 в 05:39

0

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

r0mk 27.08.12 в 05:39

0

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

r0mk 31.08.12 в 09:58

0

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

r0mk 31.08.12 в 10:05

0

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

r0mk 15.09.12 в 14:55

0
+1

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

r0mk 15.09.12 в 14:59

0

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

r0mk 04.09.12 в 11:10

0

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

r0mk 04.09.12 в 11:25

0

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

r0mk 04.09.12 в 11:26

0

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

r0mk 04.09.12 в 11:37

0

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

r0mk 16.09.12 в 11:20

0

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

r0mk 04.09.12 в 11:40

0
Минутку...