В чем разница между sed и awk? [закрыто]

Я бы посоветовал отслеживать текущий (последний) IP, с которого вошел пользователь. Когда пользователь входит в систему, измените этот IP-адрес. Проверить текущий IP-адрес на последнюю IP-часть процедуры проверки подлинности; если все по-другому, выйдите из системы. Затем может войти в систему, но это приведет к отключению входа в систему другого компьютера.

469
задан Rachel 27 October 2009 в 16:37
поделиться

2 ответа

sed - это редактор потока. Он работает с потоками символов на построчной основе. Он имеет примитивный язык программирования, который включает циклы в стиле goto и простые условные выражения (в дополнение к сопоставлению с образцом и сопоставлением адресов). По сути, есть только две «переменные»: пространство шаблонов и пространство хранения. Читаемость скриптов может быть затруднена. Математические операции в лучшем случае чрезвычайно неудобны.

Существуют различные версии sed с разными уровнями поддержки параметров командной строки и языковых функций.

awk ориентирован на поля с разделителями на построчно. Он имеет гораздо более надежные программные конструкции, включая if / else , while , do / , а и для (итерация в стиле C и массиве). Имеется полная поддержка переменных и одномерных ассоциативных массивов плюс (IMO) громоздкие многомерные массивы. Математические операции напоминают операции в C. Он имеет printf и функции. «K» в «AWK» означает « K ernighan», как в «Керниган и Ричи» из книги «Язык программирования C» (не забывайте A ho и W Эйнбергер). Можно было бы написать детектор академического плагиата, используя awk .

GNU awk ( gawk ) имеет множество расширений, включая настоящие многомерные массивы в последней версии . Существуют и другие варианты awk , включая mawk и nawk .

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

Я бы предпочел используйте sed там, где в тексте есть шаблоны. Например, вы можете заменить все отрицательные числа в каком-либо тексте в форме «знак минус, за которым следует последовательность цифр» (например, «-231,45») на форму «скобки бухгалтера» (например, «(231,45)» ) с помощью этого (в котором есть место для улучшения):

sed 's/-\([0-9.]\+\)/(\1)/g' inputfile

Я бы использовал awk , когда текст больше похож на строки и столбцы или, поскольку awk относится к ним «записи» и "поля". Если бы я собирался выполнить аналогичную операцию, как указано выше,

534
ответ дан 22 November 2019 в 22:45
поделиться

1) В чем разница между awk и sed?

Оба являются инструментами для преобразования текста. НО awk может делать больше, чем просто манипулировать текстом. Это сам по себе язык программирования с большинством вещей, которые вы изучаете в программировании, таких как массивы, циклы, управление потоком if / else и т. Д. Вы также можете «программировать» в sed, но вы не захотите поддерживать код, написанный на нем. .

2) Какие приложения лучше всего использовать для инструментов sed и awk?

Заключение: используйте sed для очень простого разбора текста. Что-нибудь кроме этого, awk лучше. Фактически, вы можете полностью отказаться от sed и просто использовать awk. Так как их функции перекрываются, и awk может больше, просто используйте awk. Вы также сократите время обучения.

119
ответ дан 22 November 2019 в 22:45
поделиться
Другие вопросы по тегам:

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