Vale a pena aprender Awk?

3

Eu sou decente com scripts bash e estou pegando a regex e um pouco de uso de sed. Está aprendendo o awk ainda vale a pena com todas as alternativas lá fora. Opiniões?

    
por Thomas Dignan 29.04.2010 / 04:22

5 respostas

10

As diferentes alternativas existem, não porque cada um pode fazer o mesmo que o outro (embora isso seja verdade para casos localizados, ou para linguagens de programação completas como Perl), mas sim porque eles podem fazer diferente coisas.

O

sed não é muito adequado para o processamento de dados tabulares, e o uso de bash puro normalmente é mais doloroso do que se deseja. O awk opera quase trivialmente em dados tabulares, e também pode ser usado para escrever máquinas de estado pequeno. Passe algum tempo olhando para as várias soluções do awk no Stack Overflow para algumas idéias sobre o que ele pode fazer.

    
por 29.04.2010 / 04:31
3

Eu uso o awk o tempo todo e evito escrever ou usar o perl o máximo que posso. Perl queria fazer muito e se tornou uma linguagem de propósito geral, mas infelizmente tem uma sintaxe horrível e ilegível, IMHO. Manter scripts perl que foram escritos por outra pessoa é uma dor e isso tende a ser verdade para nossos próprios scripts depois de um tempo também.

Por outro lado, o awk tem um escopo limitado, mas de propósito, e funciona bem com isso. Interfaces relativamente bem com scripts de shell também, ao contrário do perl.

Quanto ao bash ser um sobrevivente, eu prefiro ksh93 se você me perguntar.

    
por 29.04.2010 / 17:00
2

Eu dificilmente chamaria Perl de "morrer", quaisquer que sejam as outras opiniões que você possa ter sobre isso

Como você fez a comparação entre o Awk e o Perl, talvez esteja interessado em ver o livro Minimal Perl . Ele mostra como o Perl se compara a vários utilitários de linha de comando Unix / Linux. Deve fornecer informações suficientes para tomar uma decisão mais informada sobre o que estudar, independentemente da sua escolha.

Pessoalmente, acho que há melhores escolhas do que o Awk, e só aprenderia se fosse claramente a melhor escolha para a minha tarefa em mãos. Mas, novamente, eu poderia dizer o mesmo sobre muitas coisas ...

    
por 29.04.2010 / 05:09
1

Eu ainda uso o awk ocasionalmente - embora eu use com mais frequência o Perl. Se você não quer aprender Perl porque acha que está morrendo (uma visão que eu discordo, mas você tem direito a sua visão), então considere o Python. Para o processamento de texto simples de dados colunares, o awk é excelente. Para um trabalho mais geral, Perl ou Python são excelentes. Depois disso, você está se movendo para a programação de sistemas pesados e talvez C ou C ++ (ou Go, ou ...).

Bash é um shell muito poderoso. Ainda há coisas que Perl pode fazer que Bash não pode. Eu ainda tenho que escrever código que irá funcionar outros shells, então eu tenho que ter cuidado com o que eu uso do conjunto de recursos Bash. Sabê-lo completamente será bom - mas as outras ferramentas também têm o seu lugar.

Então, se você tiver tempo para aprender o awk moderadamente bem, ou será fácil para você, porque você já é adepto dos componentes (expressões regulares estendidas, sintaxe semelhante ao C), então é útil ocasionalmente ferramenta para ter disponível para você. Você pode preferir aprender Perl ou Python, no entanto.

    
por 29.04.2010 / 05:09
0

Depende do seu nível de conforto.

Eu vim para o shell via perl, então estou confortável em usar o perl para coisas complicadas.

No entanto, acho que quanto mais tempo eu estou fazendo isso, eu quero fazer mais e mais coisas complicadas em shell one-liners em vez de lidar com a sobrecarga de um script perl "bom". Eu acho o awk uma ferramenta inestimável para fazer coisas complicadas.

Nunca é demais aprender um pouco de tudo, mesmo que seja apenas o suficiente para você descobrir que essa ferramenta em particular não se encaixa nas suas maneiras de fazer as coisas.

    
por 29.04.2010 / 15:55