Есть ли еще основания для изучения AWK? - PullRequest
95 голосов
/ 20 сентября 2008

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

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

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

Ответы [ 24 ]

3 голосов
/ 26 сентября 2008

Computerworld недавно дал интервью с Альфредом В. Ахо (одним из трех создателей AWK) о AWK. Это довольно интересное чтение. Так что, может быть, вы найдете в нем некоторые подсказки, почему стоит изучить AWK.

2 голосов
/ 26 сентября 2008

Конечно: я работаю в среде, где единственными доступными языками являются: (некоторый язык shity, который генерирует COBOL, OMG, OMG), bash (старая версия), perl (я еще не владею этим), sed, awk и некоторые другие утилиты командной строки. Знание awk сэкономило мне несколько часов (и я сгенерировал несколько задач по обработке текста от моих коллег - они приходят ко мне по крайней мере три раза в день).

2 голосов
/ 16 декабря 2016

awk имеет очень хорошее соотношение полезность / сложность, и «простой awk» работает в каждой Unix / Linux / MacOS (и его можно установить и в других системах).

Он был разработан в Золотой век, когда люди ненавидели печатать, поэтому сценарии могут быть очень, очень короткими и быстрыми для написания. Я попытаюсь установить mawk, быструю версию, якобы она ускоряет вычисления примерно в 9 раз, awk / gawk довольно медленная, поэтому, если вы хотите использовать ее вместо R и т. Д., Вы можете захотеть mawk.

2 голосов
/ 20 сентября 2008

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

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

1 голос
/ 12 ноября 2008

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

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

1 голос
/ 20 сентября 2008

Нет.

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

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

1 голос
/ 20 сентября 2008

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

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

$ dpkg -l|awk '/^rc/ {print $2}'|xargs sudo dpkg -P
0 голосов
/ 14 апреля 2018

Это зависит от ваших товарищей по команде, вашего лидера и задачи, над которой вы работаете.

if( team mates and leader ask to write awk ){
  if( you can reject that){
    if( awk code is very small){
      learn little just like learn Regex
    }else{
      use python or even java
    }
  }else{
    do as they ask
  }
}
0 голосов
/ 03 января 2019

В настоящее время я занимаюсь программированием на python. Но я до сих пор не знаю его достаточно хорошо, чтобы его можно было легко использовать для простых однократных преобразований файлов.

С помощью awk я могу быстро разработать однострочный фрагмент кода в командной строке unix, который выполняет довольно быстрые преобразования. Каждый раз, когда я использую awk, кусок кода, который я пишу, будет одноразовым и не длиннее нескольких строк. Может быть, утверждение if и оператор printf здесь или там в одной строке.

Я никогда не писал фрагмент кода длиной более 10 строк с помощью awk. Я видел несколько таких сценариев много лет назад.

Но все, что требует много строк кода, я бы прибегнул к python.

Я люблю awk. Это очень мощный инструмент в сочетании с седом.

0 голосов
/ 17 июля 2017

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

У меня есть код awk, который теперь я должен переписать только потому, что я внезапно отладил, что в awk / gawk нет такой вещи, как несжадные совпадения, поэтому он не может правильно выполнять некоторые регулярные выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...