Я постоянно изучаю новые инструменты, даже старомодные, потому что мне нравится использовать правильное решение для проблемы.
Тем не менее, интересно, существует ли все еще какая-либо причина изучить некоторые из них. awk
например, интересно мне, но для простой текстовой обработки, я могу использовать grep
, cut
, sed
, и т.д., в то время как для сложных, я пойду для Python.
Теперь я не подразумеваю, что это, это не мощный и удобный инструмент. Но так как это занимает время и энергия изучить новый инструмент, действительно ли это стоит того?
Я думаю, что это зависит от среды, в которой Вы находите себя. Если Вы *, отклоняют человека, то знание awk
является Хорошей Вещью. Единственная другая среда сценариев, которая может быть найдена на фактически каждом *, отклоняет, sh
. Таким образом, в то время как grep
, sed,
и т.д. может, конечно, заменить awk
на современной господствующей тенденции linux
дистрибутив, когда Вы перемещаетесь в более экзотические системы, знание немного awk
будет Реальным Удобный.
awk
может также использоваться для больше, чем просто обработки текста. Например, один из моих супервизоров пишет код астрономии в awk
- именно так крайне старая школа и , потрясающая , он. Назад в его дни, это был лучший инструмент для задания... и теперь даже при том, что его студенты как я используют Python и что не, он придерживается того, что он знает и работает хорошо.
В закрытии, существует много старого кода, ударяющего во всем мире, знание немного awk
не собирается причинять боль. Это также сделает Вас лучше *, отклоняют человека:-)
Теперь, когда Perl портирован на в значительной степени каждую значительную платформу, я сказал бы, что это не стоит того. Это более универсально, чем sed и awk вместе. Что касается авторазделения, можно сделать это в жемчуге как это:
perl -F':' -ane 'print $F[3],"\n";' /etc/passwd
РЕДАКТИРОВАНИЕ: Вы могли бы все еще хотеть стать несколько познакомившими с awk, потому что некоторые другие инструменты основаны на его философии основанных на шаблоне действий (например, DTrace на Солярисе).
Я сказал бы, что существует. Для простого материала AWK намного легче на неопытном системном администраторе / разработчик, чем Python. Можно изучить немного AWK и сделать много вещей, узнав, что Python означает учить совершенно новый язык (да, я знаю, что AWK является языком, смысл также).
Perl мог бы быть в состоянии сделать много вещей, которые AWK может сделать, но предложил выбор в этот день и возраст, я выберу Python здесь. Таким образом да, необходимо изучить AWK. но изучите Python также:-)
Нет.
Даже при том, что это могло бы быть интересно, можно сделать все, что awk может сделать использование другого, более мощные инструменты, такие как Perl.
Проводят Ваше время, изучая те более мощные инструменты - и только случайно берут некоторый awk по пути.
Я сказал бы, что это, вероятно, больше не стоит того. Я время от времени использую его в качестве намного большего количества универсального потокового редактора, чем sed с ищущими включенными способностями, но если бы Вы являетесь опытными с Python, я не знаю задачу, которую Вы были бы в состоянии закончить, это намного быстрее для компенсации в течение времени должно было изучить awk.
следующая команда является, вероятно, единственной, для которой я использовал awk за прошлые два года (это производит чистку полуудаленных пакетов от моих систем Debian/Ubuntu):
$ dpkg -l|awk '/^rc/ {print $2}'|xargs sudo dpkg -P
Конечно: я работаю в среде, где единственные доступные языки: (некоторый поганый язык, который генерирует КОБОЛ, OMG, OMG), удар (старая версия), жемчуг (я еще не осваиваю его), sed, awk, и некоторые другие утилиты командной строки. Знание awk
сохранило меня несколько часов (и генерировал несколько задач обработки текста от моего collegaues - они прибывают ко мне по крайней мере три раза в день).
Полезно главным образом, если необходимо иногда анализировать файлы журнала для данных или вывода программ, в то время как сценарии оболочки, потому что очень легко достигнуть в awk этого, которое взяло бы Вас немного больше строк кода в Python.
Это, конечно, имеет больше силы, чем это, но это, кажется, задачи, для которых большинство людей использует его.
Computerworld недавно сделал интервью с Alfred V. Aho (один из трех создателей AWK) о AWK. Это - довольно интересное чтение. Таким образом, возможно, Вы найдете некоторые подсказки в нем, почему это - хорошая идея, изучают AWK.
Изучение AWK было неоценимо для меня в моем последнем контракте, работающем над встроенной системой Linux, в которой не были установлены ни Perl, ни большинство других языков сценариев.
Большая часть awk лайнеры могут быть достигнуты с Perl лайнеры - если Вы принимаете решение войти в Perl одно мышление лайнера. Или, просто используйте Perl три лайнера:)
при поддержании сценариев оболочки, записанных кем-то, кому понравился awk, тогда ясно, Вы собираетесь должны изучить awk.
, Даже если нет никакой практической потребности, если Вы уже знаете regex, не займет много времени брать основы, и это интересно видеть, как вещи были разработаны тогда. Это довольно изящно.
Если Вы уже знаете и используете sed, Вы могли бы также взять, по крайней мере, немного awk. Они могут быть переданы по каналу вместе для некоторых довольно мощных приемов. Всегда производит на аудиторию впечатление.
Я иногда использую AWK для контакта с HTML. Например, этот код переводит таблицы в файлы CSV:
BEGIN {s=""; FS="n"}
/<td/ { gsub(/<[^>]*>/, ""); s=(s ", " $1);}
/<tr|<TR/ { print s; s="" }
, Который является большим, если Вы - анализ экранных данных. На самом деле могло бы иметь место, что я люблю AWK, потому что это позволяет мне создавать неверное решение проблем так быстро:) [еще 111] примеры . Это также упоминается в Jon Bentley, прекрасном Жемчуг Программирования .
Я действительно использую awk время от времени. Это хорошо для очень простой текстовой перестановки посреди конвейера; это заполняет очень узкую нишу прямо между не необходимостью в нем вообще и необходимостью выкрикнуть Perl/Python/whatever.
я не советовал бы провести много времени на нем, но это могло бы пригодиться для знания основ синтаксиса - по крайней мере, достаточно, что можно консультироваться, руководство быстро должно Вы когда-либо хотеть использовать его.
Единственной причиной, которую я использую awk
, является авторазделение:
awk '{print $3}' < file.in
Это печатает третье разграниченное пробелом поле в file.in
. Это немного легче, чем:
tr -s ' ' < file.in | cut -d' ' -f3
Я думаю, что awk является большим, если Ваш файл содержит столбцы/поля . Я использую его при обработке/анализе конкретного столбца в многостолбцовом файле. Или если я хочу добавить/удалить конкретный столбец (столбцы).
, например,
awk -F \t '{ if ($2 > $3) print; }' <filename>
распечатает, только если 2-е значение столбца на вкладке отделилось, файл больше, чем 3-е значение столбца.
, Конечно, я мог использовать Perl или Python, но awk делает его настолько более простым с краткой однострочной командой.
Также изучение awk является довольно недорогим. Можно изучить awk основы меньше чем через час, таким образом, это не столько же усилия сколько изучение никакого другого программирования/языка сценариев.
Если Вы быстро изучаете основы awk, можно действительно сделать удивительные вещи на командной строке.
Но настоящая причина для изучения awk состоит в том, чтобы иметь оправдание прочитать превосходную книгу Язык программирования AWK его авторами Aho, Kernighan и Weinberger. Вы думали бы с имени, что оно просто преподает Вам awk. На самом деле это - только начало. Запуск в обширный массив проблем, которыми можно заняться, после того как каждый использует краткий язык сценариев, который делает обработку строк легкой — и awk, был одним из первых — это продолжает учить читателя, как реализовать базу данных, синтаксический анализатор, интерпретатор, и (если не изменяет память, меня) компилятор для маленького определенного для проекта языка программирования! Если бы только они также запрограммировали операционную систему в качестве примера с помощью awk, то книга была бы довольно полным введением обзора в информатику!
Заметно очиститесь и краткий, как исходная книга языка C, это также - замечательный пример дружественной технической сделанной правильно записи. Даже индекс является частью мастерства.
Awk? Если Вы будете знать это, то Вы будете использовать его в командной строке иногда, но для чего-либо большего Вы будете чувствовать себя захваченными, не могущими получить доступ к более широким функциям Вашей системы и Интернета, к которому что-то как Python обеспечивает доступ. Но книга? Вы будете всегда радоваться, что читаете его!