Есть ли все еще какая-либо причина изучить AWK?

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

Тем не менее, интересно, существует ли все еще какая-либо причина изучить некоторые из них. awk например, интересно мне, но для простой текстовой обработки, я могу использовать grep, cut, sed, и т.д., в то время как для сложных, я пойду для Python.

Теперь я не подразумеваю, что это, это не мощный и удобный инструмент. Но так как это занимает время и энергия изучить новый инструмент, действительно ли это стоит того?

103
задан k0pernikus 1 February 2012 в 13:23
поделиться

16 ответов

Я думаю, что это зависит от среды, в которой Вы находите себя. Если Вы *, отклоняют человека, то знание awk является Хорошей Вещью. Единственная другая среда сценариев, которая может быть найдена на фактически каждом *, отклоняет, sh. Таким образом, в то время как grep, sed, и т.д. может, конечно, заменить awk на современной господствующей тенденции linux дистрибутив, когда Вы перемещаетесь в более экзотические системы, знание немного awk будет Реальным Удобный.

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

В закрытии, существует много старого кода, ударяющего во всем мире, знание немного awk не собирается причинять боль. Это также сделает Вас лучше *, отклоняют человека:-)

93
ответ дан freespace 24 November 2019 в 04:15
поделиться

Теперь, когда Perl портирован на в значительной степени каждую значительную платформу, я сказал бы, что это не стоит того. Это более универсально, чем sed и awk вместе. Что касается авторазделения, можно сделать это в жемчуге как это:

perl -F':' -ane 'print $F[3],"\n";' /etc/passwd

РЕДАКТИРОВАНИЕ: Вы могли бы все еще хотеть стать несколько познакомившими с awk, потому что некоторые другие инструменты основаны на его философии основанных на шаблоне действий (например, DTrace на Солярисе).

0
ответ дан zvrba 24 November 2019 в 04:15
поделиться

Я сказал бы, что существует. Для простого материала AWK намного легче на неопытном системном администраторе / разработчик, чем Python. Можно изучить немного AWK и сделать много вещей, узнав, что Python означает учить совершенно новый язык (да, я знаю, что AWK является языком, смысл также).

Perl мог бы быть в состоянии сделать много вещей, которые AWK может сделать, но предложил выбор в этот день и возраст, я выберу Python здесь. Таким образом да, необходимо изучить AWK. но изучите Python также:-)

1
ответ дан wzzrd 24 November 2019 в 04:15
поделиться

Нет.

Даже при том, что это могло бы быть интересно, можно сделать все, что awk может сделать использование другого, более мощные инструменты, такие как Perl.

Проводят Ваше время, изучая те более мощные инструменты - и только случайно берут некоторый awk по пути.

1
ответ дан Ed Guiness 24 November 2019 в 04:15
поделиться

Я сказал бы, что это, вероятно, больше не стоит того. Я время от времени использую его в качестве намного большего количества универсального потокового редактора, чем sed с ищущими включенными способностями, но если бы Вы являетесь опытными с Python, я не знаю задачу, которую Вы были бы в состоянии закончить, это намного быстрее для компенсации в течение времени должно было изучить awk.

следующая команда является, вероятно, единственной, для которой я использовал awk за прошлые два года (это производит чистку полуудаленных пакетов от моих систем Debian/Ubuntu):

$ dpkg -l|awk '/^rc/ {print $2}'|xargs sudo dpkg -P
1
ответ дан Matthias Kestenholz 24 November 2019 в 04:15
поделиться

Конечно: я работаю в среде, где единственные доступные языки: (некоторый поганый язык, который генерирует КОБОЛ, OMG, OMG), удар (старая версия), жемчуг (я еще не осваиваю его), sed, awk, и некоторые другие утилиты командной строки. Знание awk сохранило меня несколько часов (и генерировал несколько задач обработки текста от моего collegaues - они прибывают ко мне по крайней мере три раза в день).

2
ответ дан Zsolt Botykai 24 November 2019 в 04:15
поделиться

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

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

2
ответ дан NeuroSys 24 November 2019 в 04:15
поделиться

Computerworld недавно сделал интервью с Alfred V. Aho (один из трех создателей AWK) о AWK. Это - довольно интересное чтение. Таким образом, возможно, Вы найдете некоторые подсказки в нем, почему это - хорошая идея, изучают AWK.

4
ответ дан dlat 24 November 2019 в 04:15
поделиться

Изучение AWK было неоценимо для меня в моем последнем контракте, работающем над встроенной системой Linux, в которой не были установлены ни Perl, ни большинство других языков сценариев.

3
ответ дан George Jempty 24 November 2019 в 04:15
поделиться

Большая часть awk лайнеры могут быть достигнуты с Perl лайнеры - если Вы принимаете решение войти в Perl одно мышление лайнера. Или, просто используйте Perl три лайнера:)

при поддержании сценариев оболочки, записанных кем-то, кому понравился awk, тогда ясно, Вы собираетесь должны изучить awk.

, Даже если нет никакой практической потребности, если Вы уже знаете regex, не займет много времени брать основы, и это интересно видеть, как вещи были разработаны тогда. Это довольно изящно.

5
ответ дан slim 24 November 2019 в 04:15
поделиться

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

4
ответ дан Internet Friend 24 November 2019 в 04:15
поделиться

Я иногда использую AWK для контакта с HTML. Например, этот код переводит таблицы в файлы CSV:

BEGIN {s=""; FS="n"}
/<td/ { gsub(/<[^>]*>/, ""); s=(s ", " $1);}
/<tr|<TR/ { print s; s="" }

, Который является большим, если Вы - анализ экранных данных. На самом деле могло бы иметь место, что я люблю AWK, потому что это позволяет мне создавать неверное решение проблем так быстро:) [еще 111] примеры . Это также упоминается в Jon Bentley, прекрасном Жемчуг Программирования .

7
ответ дан Dave 24 November 2019 в 04:15
поделиться

Я действительно использую awk время от времени. Это хорошо для очень простой текстовой перестановки посреди конвейера; это заполняет очень узкую нишу прямо между не необходимостью в нем вообще и необходимостью выкрикнуть Perl/Python/whatever.

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

6
ответ дан Eevee 24 November 2019 в 04:15
поделиться

Единственной причиной, которую я использую awk, является авторазделение:

awk '{print $3}' < file.in

Это печатает третье разграниченное пробелом поле в file.in. Это немного легче, чем:

tr -s ' ' < file.in | cut -d' ' -f3
29
ответ дан Greg Hewgill 24 November 2019 в 04:15
поделиться

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

, например,

awk -F \t '{ if ($2 > $3) print; }' <filename>

распечатает, только если 2-е значение столбца на вкладке отделилось, файл больше, чем 3-е значение столбца.

, Конечно, я мог использовать Perl или Python, но awk делает его настолько более простым с краткой однострочной командой.

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

24
ответ дан Nikhil 24 November 2019 в 04:15
поделиться

Если Вы быстро изучаете основы awk, можно действительно сделать удивительные вещи на командной строке.

Но настоящая причина для изучения awk состоит в том, чтобы иметь оправдание прочитать превосходную книгу Язык программирования AWK его авторами Aho, Kernighan и Weinberger. Вы думали бы с имени, что оно просто преподает Вам awk. На самом деле это - только начало. Запуск в обширный массив проблем, которыми можно заняться, после того как каждый использует краткий язык сценариев, который делает обработку строк легкой — и awk, был одним из первых — это продолжает учить читателя, как реализовать базу данных, синтаксический анализатор, интерпретатор, и (если не изменяет память, меня) компилятор для маленького определенного для проекта языка программирования! Если бы только они также запрограммировали операционную систему в качестве примера с помощью awk, то книга была бы довольно полным введением обзора в информатику!

Заметно очиститесь и краткий, как исходная книга языка C, это также - замечательный пример дружественной технической сделанной правильно записи. Даже индекс является частью мастерства.

Awk? Если Вы будете знать это, то Вы будете использовать его в командной строке иногда, но для чего-либо большего Вы будете чувствовать себя захваченными, не могущими получить доступ к более широким функциям Вашей системы и Интернета, к которому что-то как Python обеспечивает доступ. Но книга? Вы будете всегда радоваться, что читаете его!

97
ответ дан Brandon Rhodes 24 November 2019 в 04:15
поделиться
Другие вопросы по тегам:

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