Вы можете удивиться, насколько awk может быть полезен для вас. Используя утилиты, сложные образцы, разделители полей, арифметические операторы, критерии отбора, вы можете получить гораздо более сложный результат. Язык awk очень полезен для получения отчетов о больших количествах сырых данных, таких как обобщение информации, полученной от других утилит, подобных ls. (См. раздел 2.5 [Более сложный пример], стр. 15.)
Программы, написанные средствами awk, обычно много короче программ, написанных на других языках. Это делает awk-программы легко составляемыми и используемыми. Часто они составляются прямо на терминале, используются один раз и затем забываются. Поскольку awk-программы интерпретируются, вы избегаете (обычно длинного) этапа компиляции в обычном цикле редактирование-компиляция-тестирование-отладка при создании программного обеспечения.
Сложные программы пишутся на awk с использованием полного настраиваемого ассемблера для восьмибитовых микропроцессоров (см. детали в Appendix D [Глоссарий], стр. 301) и ассемблера микрокода для Prolog-компьютеров специального назначения. Однако, возможности awk не всегда достаточны для задач большой сложности. Если вам приходится писать сценарии awk длиной более чем, скажем, несколько сот строк, следует попробовать воспользоваться другим программным языком. Например, использовать Emacs Lisp, если вам необходимо употреблять запутанные строки и сложные образцы. Командный процессор также может помочь с цепочками и соответствием образцов; кроме того, он позволяет полностью использовать системные утилиты. Более распространенные языки, такие как C, C++ и Lisp, предоставляют возможности для системного программирования и преодоления сложности больших программ. Программы на этих языках могут иметь больше строк входного кода, чем эквивалентные awk-программы, но их легче поддерживать и обычно работают они более эффективно.