Sou usuário do Linux há um tempo e tenho um entendimento bastante decente da maioria dos utilitários de linha de comando comuns. No entanto, aqueles que surgem repetidamente em relação à programação são grep
, awk
e sed
.
A única coisa que usei o grep é canalizar coisas para encontrar arquivos nos arquivos de log, a saída de ps
etc. Eu não usei awk
ou sed
em absoluto. Existem bons tutoriais para esses utilitários?
O AWK é particularmente adequado para dados tabulares e possui uma curva de aprendizado mais baixa do que algumas alternativas.
m AWK Primer ( link alternativo )
info sed
, info grep
e info awk
ou info gawk
O livro O'Reilly sed e awk é ótimo para er sed e awk.
Eu escrevi um livro sobre sed
— Guia Definitivo para sed - que inclui um tutorial. Abrange totalmente sed
, bem como comandos relacionados como grep
, tr
, head
e tail
. Também cobre totalmente expressões regulares muito melhor do que eu já vi em outros lugares.
Concordo com os outros que a compreensão sólida de expressões regulares é muito importante. Também concordo que sed
é melhor usado para tarefas mais simples, scripts mais complexos rapidamente ficam obscuros.
Eu discordo que awk
é obsoleto, exatamente o oposto. É como muitas coisas unix (por exemplo, vi
), há uma curva de aprendizado, mas vale a pena.
Não concordo com a sugestão de usar awk
no lugar de grep
. Não faz sentido na minha experiência. grep
é tão bom e simples.
O Livro de Receitas de Expressões Regulares publicado pela O'Rielly seria suficiente para levá-lo a qualquer lugar em qualquer idioma que os use.
Os autores do livro são Kernighan e Pike, o título é algo como "The Unix Programming Environment".
O livro que eu realmente aprendi foi chamado "Uma Introdução ao Berkeley Unix".
Se você quiser aprender um desses 3 (grep, sed e awk), você pode simplesmente aprender awk/gawk. . O awk pode executar as funções grep e sed, ou seja, usar regex para pesquisar/substituir texto, e muito mais, porque também é uma linguagem de programação. Se você aprender o interior de gawk/awk, não precisará usar grep/sed/wc/cut etc. Apenas uma ferramenta faz isso.
Na minha opinião, o awk é mais ou menos obsoleto (no entanto, outros argumentam fortemente sobre essa opinião), a maioria das pessoas que conheço hoje em dia usa uma linguagem de script como Perl ou hoje frequentemente python para manipulação avançada de texto O sed é ótimo para tarefas mais simples de manipulação de texto, eu o uso o tempo todo. Aprendi principalmente observando as one-liners sed como as de http://sed.sourceforge.net/sed1line.txt = Grep: Bem, basicamente você quer ter uma sólida compreensão das expressões regulares (também necessárias para o sed) .Eu aqui apenas usei os manuais do texinfo.