LG.BALUKATION's Weblog

Ничего, это тоже кое-что… А при желании из него можно сделать что угодно

AWK

Posted by LG.BALUKATION на 2009/02/17

Помнится, когда я только начинал осваивать никсы, я достаточно быстро нарвался на суровые штуки, не понятные и не нужные простому школьнику… Это были такие известные вещи как vim, awk, grep, dd и т. п.

Постепенно, я начал понимать, что это в большинстве случаев стандартизированные и отточенные годами механизмы, идеально пригодные каждый для своего случая. Ну типа как в микроскоп удобно что-нить очень маленькое разглядывать, а молотком — гвозди забивать. Некоторые зовут это «консольным адом«, наивно полагая что оно осталось де-то далеко в прошлом, другие же величают KISS и просто используют по мере необходимости.

Вот недавно я столкнулся с проблемой, когда надо было определённым образом обработать некоторую группу файла… Просто я ваял систему сборки одного проекта и за основу просто скопировал частично препроцессированные сорсы от другого. Но тут выяснилось, что WTK-шный препроцессор отказывается обрабатывать файлы со своими же комментариями и надо было как-то раскомментировать исходники обратно. Внутри эт всё было весёлой смесью из просто комментов, комментов препроцессора, его директив и собственно кода.

Сперва я думал было юзать всякие средства текстовых редакторов типа «Найти и заменить» и макросы Notepad++, но результат и производительность труда меня разочаровали. Так я ушёл на выходные, решив, что если будет не лень — сваяю тулзу для грамотного раскомменчивания.

Однако, в субботу мы с товарищем Spear‘ом ходили глянуть бар один и это дело несколько затянулось, а в воскресенье наши с gg75 моски пытались зохавать в ПОМИ РАН. В итоге мне как-то лень было ваять тулзу на сях, на яве было не менее лень, как впрочем и паскале… Но я вспомнил про awk!

AWK (называется по фамилиям создателей — Alfred Aho, Peter Weinberger и Brian Kernighan) — это стандартный фильтр в UNIX, обрабатывающий входной поток по некоему сценарию, язык написания которых называется то же AWK. Существует эта шутка аж с 1977 года, входит в стандарт POSIX и в его рамках не менялась с 1985 года.

Лично я в той или иной области слышал упоминания о ней (обычно ессно примеры юзания, но попадалась и книжка по сям, где часть примеров была сорсами стандартных тулз — awk не исключение). Обычно мне не нужен такой функционал и посему я её не юзал.

Однакож понадобился и решил попробовать. На работе у меня Windows XP, но я давно уже привык ставить на более-менее не игровые машины себе набор никсовых тулз, так что там тоже есть какая-то версия gawk (GNU awk). Правда документации нет, посему смотрел в сети…

IBM DeveloperWorks весьма интересный ресурс, я давно подписан на их RSS и стараюсь читать некоторые статьи. Для тех, кто как и я, о awk слышал только — что есть такая штука, доступно небольшое руководство по первым шагам. Просто и понятно расписано что это за прога такая, что она может и как примерно с ней работать.

Сам язык показался мне очень простым, так что перечень функционала мне вскоре понадобился больше, чем описание его использования. Правда man у меня не было, посему я тупа открыл доку по проге на сайте GNU. Про доку сказать нечего, я там лишь смотрел перечень встроенных функций и ИМХО он вполне пригоден к потреблению.

В общем, был получен интересный опыт, который мне здорово помог — я быстренько наваял скриптик, обработал им необходимое файло, вручную поправил пару нюансов и сделав задуманное попёрся домой куда раньше намеченного 8-)

Advertisements

комментария 4 to “AWK”

  1. Igor said

    а зачем гавк, если есть сед?
    ну и kiss — это совсем другое.. kiss — это целая философия, а не «кесарю-кесарево, плотнику-плотниково».

  2. sed я понимаю в основном как средство автозамены по шаблону, мне нужно было несколько иное.

    KISS для меня — это идеология отказа от лишних усложнений. Разрозненный функционал я считаю одним из примеров таких «не нужных наворотов».

  3. Igor said

    есть ещё и нижняя граница.. То есть чересчур разрозненным функционал тоже не должен быть.. это раз.. а два, kiss говорит не о том, что всегда нужно пользоваться гавком или седом, а о том, что нужно выбирать инструмент исходя из простоты..

    Иногда проще не сканировать и исправлять ошибки, а напечатать заново всё. И это именно KISS, так как простота стоит на первом месте. Проще написать скрипт с гавками, ты его пишешь. Проще поменять вручную, ты меняешь вручную. А всегда пользоваться чем-то одним — это не KISS, это ограниченность :)

  4. В пятницу я какрас и пробовал автозамену и ручные правки… Еслиб так легко сработало, яб не ваял скрипт для тулзы, которую не разу не юзал до того =)

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s