Não sou nenhum expert ou grande conhecedor da linguagem AWK, mas ela é muito útil e me ajudou muito nas provas sobre Shell Script na faculdade. Por isso resolvi escrever este pequeno e introdutório tutorial acerca dessa linguagem. É bom todo usuário Linux saber usá-la. :)
AWK é uma linguagem utilizada para processamento de informações em texto, como o conteúdo de um arquivo - principalmente informações em colunas - ou a saída de outros comandos, como cat, grep etc.
A estrutura de um script AWK (pode estar em um arquivo ou ser escrito diretamente na linha de comando - Shell) é a seguinte:
BEGIN{
Comandos executados ao iniciar o processamento, antes de ler as linhas do texto
}
[condicao]{
Comandos a serem executados em todas as linhas do texto
}
END{
Comando final. Executado após o processamento de todas as linhas
}
A condição do segudo bloco é opcional. Se não especificada, os respectivos comandos do bloco serão executados em todas as linhas. Caso contrário, serão executados apenas nas linhas que satisfizerem a condição.
A condição pode ser uma expressão regular. Basta colocá-la entre barras:
/^A/{
Comando...
}
Se um bloco de comandos estiver vazio, é executado print $0, ou seja, imprime a linha corrente.
Algumas variáveis definidas no AWK:
FS -> separador de campos
NR -> número da linhas
NF -> número de campos na linha
Para mais informações:
Pergunta
Beraldo
Não sou nenhum expert ou grande conhecedor da linguagem AWK, mas ela é muito útil e me ajudou muito nas provas sobre Shell Script na faculdade. Por isso resolvi escrever este pequeno e introdutório tutorial acerca dessa linguagem. É bom todo usuário Linux saber usá-la. :)
AWK é uma linguagem utilizada para processamento de informações em texto, como o conteúdo de um arquivo - principalmente informações em colunas - ou a saída de outros comandos, como cat, grep etc.
A estrutura de um script AWK (pode estar em um arquivo ou ser escrito diretamente na linha de comando - Shell) é a seguinte:
BEGIN{ Comandos executados ao iniciar o processamento, antes de ler as linhas do texto } [condicao]{ Comandos a serem executados em todas as linhas do texto } END{ Comando final. Executado após o processamento de todas as linhas }A condição do segudo bloco é opcional. Se não especificada, os respectivos comandos do bloco serão executados em todas as linhas. Caso contrário, serão executados apenas nas linhas que satisfizerem a condição. A condição pode ser uma expressão regular. Basta colocá-la entre barras:/^A/{ Comando... }Se um bloco de comandos estiver vazio, é executado print $0, ou seja, imprime a linha corrente. Algumas variáveis definidas no AWK: FS -> separador de campos NR -> número da linhas NF -> número de campos na linha Para mais informações:- Manpage do AWK: $ man awk
- http://www.gnu.org/software/gawk/manual/gawk.html
- http://en.wikipedia.org/wiki/Awk
Exemplos: Filtra as linhas com o padrão especificado. Linhas que terminam com conf Usando outro separador de campos e imprimindo colunascat /etc/passwd | awk -F: '{print $1}'Usando separador de camposls -l /etc |awk '{print $1 FS $8}'Numerando linhasls -l /etc | awk '{print NR FS$1 FS $8}'Filtra linhas com padrão especificado e mostra apenas as colunas 1 e 8.ls -l /etc | awk '/conf$/{print $1" "$8}'Imprime as linhas com mais de 3 campos. Elimina a primeira linha do ls -l (Total) Filtra linhas com arquivos cujos nomes possuem menos de 5 caracteres Imprime linhas paresls -l /etc | awk 'NR % 2 == 0 {print NR" "$0}'Substitui stringsls -l /etc | awk '{sub(/conf$/,"test"); print $0}'Procura expressão em determinado campo Inserindo strings entre camposcat /etc/passwd | awk -F: '{print "Login: " $1}'Filtra a saída de ls -l, a fim de mostrar o nome do arquivo, suas permissões e seu tamanho (a condição NR != 1 evita que a linha Total seja exibida):ls -l | awk 'NR != 1{print "Nome: "$8" Perm: "$1" Tamanho: "$5}'Imprime o comprimento da maior linhaawk '{ if (length($0) > max) max = length($0)}; END { print max}'; arquivoImprime as linhas com mais de 42 caracteres Exibe o número de linhas do arquivoawk 'END { print NR }' arquivoEditado por BeraldoLink para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.