Intereting Posts
mdadm – Создание RAID1 в LiveUSB не сохраняется при повторной загрузке человек вызывает сломанную трубу при использовании пейджера, отличного от менее Проблемы с загрузкой kali linux живут из usb Как исправить bash, ища программу в неправильном каталоге (Проблемы с настройкой NPM на Ubuntu 11.10) Какая версия NFS используется моим сервером NFS? Не осталось свободного места для раздела rootfs для обновления ядра oxmplayer на вершине и блокирует все другие приложения GUI Установка корневого сертификата в Mozilla Firefox Изменение файла XML на основе частичного имени Требуется разрешение на запись для установки тем в Linux Mint 17 «Rebecca» Mate Loop в скрипте на удаленном сервере не работает Де-демонизация существующего сервиса гостевая ОС kvm недоступна после перезагрузки системы Как проверить, могу ли я войти на сервер через ssh? отрицательные значения в RHEL воспринимаются как положительные. Зачем?

У sed есть функция, превосходящая awk?

Недавно я узнал sed некоторое время, и это был неудобный опыт из-за

  • необходимость запоминания однобуквенных команд ( p , a , d , …)
  • концепция единого пространства удержания для запоминания контекста – управляется другими аналогичными командами ( h , x , g , …)

Я сказал себе: не может ли это быть более интуитивным? Т.е. с более подробными командами (например, print вместо p ) и более одного буфера – стандартные переменные в соответствии с моей потребностью (например, lastUserSeen )?

А потом кто-то сказал мне :

Нет, никогда не используйте h или любые другие конструкторы sed, кроме s, g и p (с -n), или вы буквально используете конструкции, которые стали устаревшими в середине 1970-х годов, когда был изобретен awk. Люди используют эти другие конструкции сегодня строго для умственных упражнений, а не для серьезного написания программного обеспечения, поскольку эквивалентное решение awk будет более четким, более эффективным, более портативным, легче поддерживать / улучшать и лучше любым другим значимым образом.

AWK? Я сразу же вскочил и влюбился в это. Многие из моих многострочных программ работали в первом запуске без какой-либо отладки. Из того, что я с тех пор изучал awk, я думаю, что он способен полностью вытеснить sed. Или есть какая-то особенность sed (которую я пропустил), эффект которой не может быть легко достигнут awk? Есть ли причина, по которой пользователь awk запускает sed?

Изменить: это не вопрос «что лучше», а сравнение наборов функций. Есть ли особенность в sed эффекте, из которого невозможно достичь аналогичной эффективности в awk, но для этого потребуется гораздо больше awk-кода?

Для быстрого и простого редактирования файла, sed -i-функция намного проще, чем создание чего-то подобного с помощью awk . Я согласен с тем, что платформы, использующие gawk версии 1.4.0 или новее, имеют функцию «inplace», чтобы покрыть это.

 sed -i 's/foo/bar/' filename 

Неохотно узнал sed из-за всех существующих скриптов, использующих его. Учитывая выбор, при написании нового скрипта awk обычно выигрывает, код становится гораздо более удобочитаемым + поддерживаемым.

В большинстве случаев sed используется для базового редактирования ( s///g ).
Большую часть времени awk используется для более сложного редактирования текста.

Основная причина использования sed вместо awk в случаях, когда sed и awk предоставляют полезные (простые) ответы, заключается в том, что sed составляет ~ 100k, а GNU awk – ~ 600k.

Меньшие нагрузки быстрее (иногда это важно).

Старшие awks, как правило, меньше, mawk ~ 121k (мы должны найти старого sed, чтобы сделать разумное сравнение).

И есть Perl, очень мощный язык, очень быстрый в некоторых приложениях, но довольно большой для загрузки ~ 2 мегабайт. Повторное использование Perl может привести к большим задержкам.

В главе 6 главы приветствия содержатся хорошо написанные и вполне сбалансированные рекомендации о том, когда использовать или избегать использования sed, по сравнению с awk и perl.