Что awk может сделать это, sed не может?

Я использовал sed для пакета ptovess, где я не мог сделать этого с awk. Vould awk сделали это? Или действительно ли это - больше вопрос выбора и вызов awk и sed эквивалент для использования. Они оба делают общую поисковую замену, похожую с i/o. Существует ли хороший пример, что не может быть сделано с тем что другая банка?

5
задан Niklas 22 September 2014 в 09:19
поделиться

5 ответов

Одно из основных отличий заключается в том, что программа awk может поддерживать состояние и может работать с использованием нескольких проходов над одними и теми же данными. Вызов sed обязательно является однопроходным без сохранения состояния, потому что sed (Stream EDitor) изначально ориентирован на поток. Однако преимущество в том, что это делает sed более простым и подходящим для использования в конвейерных цепочках.

9
ответ дан 18 December 2019 в 06:36
поделиться

G'day,

Awk более мощный. sed имеет тенденцию быть более ограниченным в том, что он может делать.

Sed хорош для построчных изменений данных. В нем есть несколько простых циклических конструкций, обычные элементы регулярных выражений ed / ex / vi и функции подстановки, составные операторы, решения и т. Д. Большинство людей используют его для изменения передаваемых данных.

Awk хорош для фильтрации или переупорядочения данных. Его чаще всего используют для составления отчетов.

Я бы посоветовал взглянуть на отличную книгу Дейла Догерти «sed & awk» ( продезинфицированная ссылка на Amazon ). Кстати, здесь также есть одно из лучших объяснений регулярных выражений.

Многие люди все равно сказали бы использовать Perl! (-:

Редактировать: Забыл сказать, что язык awk очень похож на язык C, что неудивительно, учитывая, что 'k' в awk означает Брайана Кернигана. Да. Это Брайан Керниган!

Также sed работает только с потоками данных, тогда как awk работает как с потоками данных, так и с файлами.

HTH

ура, Sed работает только с потоками данных, тогда как awk работает с как потоки данных, так и файлы.

3
ответ дан 18 December 2019 в 06:36
поделиться

В оригинале (и до сих пор лучший) книга, Язык программирования AWK , реализовано следующее (среди прочего):

  • простой ассемблер
  • компилятор рекурсивного спуска
  • программа индексирования текста

Попробуйте сделать это с сед.

7
ответ дан 18 December 2019 в 06:36
поделиться

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

3
ответ дан 18 December 2019 в 06:36
поделиться

SED является потоковым редактором и поэтому не имеет переменных и некоторых других конструкций, подобных AWK. AWK - полноценный язык.

2
ответ дан 18 December 2019 в 06:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: