Os 10 comandos Awk interessantes

Os 10 comandos Awk interessantes
Este artigo passará por alguns comandos interessantes e quando usá -los. Leia mais para descobrir!

Introdução ao AWK

Awk é uma língua popular no Unix e Linux. Ele recebeu esse nome de seus autores: Alfred Aho, Peter Weinberger e Brian Kernighan. O comando AWK permite o acesso à linguagem de programação AWK, projetada para processar dados nos fluxos de texto.

Utilizado popularmente para padrões de digitalização e simplificando operações complexas, o AWK ajuda a escrever declarações eficazes para definir padrões de texto em um arquivo. O comando AWK então processa essas declarações lendo uma linha de cada vez e toma uma ação com base na condição dada.

Simplificando, a AWK encontra e substitui o texto e ajuda a classificar, validar ou indexar os dados fornecidos.

Recursos de Awk

Awk vem com muitos recursos exclusivos:

  1. Nenhuma compilação é necessária em Awk
  2. Frequentemente usado para extração de dados
  3. Comumente usado para realizar manipulação de texto
  4. Ajuda a gerar resultados conforme necessário.

Agora vamos explorar o poder dos comandos AWK.

15 comandos AWK interessantes

Aqui está uma lista compilada de alguns comandos AWK interessantes:

  1. Impressão de números aleatórios em um conjunto - Suponha que você queira imprimir alguns números aleatórios de uma piscina selecionada. Você pode especificar a quantidade de números aleatórios deste pool e pedir ao AWK para imprimir isto. Aqui está um exemplo: vamos imprimir 10 números de 0 a 1000. Portanto, o comando AWK para isso será o seguinte: Awk 'Begin for (i = 1; i <= 10; i++)
    Print Int (1001 * rand ()) '
  1. Procurando por foo ou bar - E se você quiser escrever uma linha na qual deseja realizar uma pesquisa simples por foo ou bar? Aqui está um comando que permitirá que você faça exatamente isso: se (/foo/||/bar/)
    imprimir "encontrado!"
  1. Reorganizando um campo - Se você deseja imprimir um determinado campo em uma determinada ordem, a AWK pode fazer isso por você. Suponha que você queira imprimir os 5 primeiros campos de um conjunto específico em um campo por linha, você pode usar o seguinte comando: awk 'i = 1
    enquanto eu <= 3)
    imprimir $ i
    eu++

    ' Arquivo de entrada
  1. Dividindo uma linha - Em qualquer conjunto de arquivos, o AWK pode ajudar a dividir uma linha em campos, onde x é o nome do campo: $ awk 'print $ x, $ x' xyz.TXT
  1. Executando vários comandos de uma só vez - Para executar vários comandos ao mesmo! Jack "| awk '$ 2 =" jill "; imprimir $ 0'
  1. Executando um script AWK - Se você deseja executar um script AWK de um arquivo específico, pode criar um arquivo sum_column e colar o script abaixo nesse arquivo: #!/usr/bin/awk -f
    Comece sum = 0
    sum = soma+$ x
    Final soma de impressão

    No script acima, x é igual à coluna que você precisa inserir no arquivo. Na conclusão bem -sucedida desta tarefa, você pode usar o seguinte comando para exibir a soma da coluna X no arquivo de entrada:

    awk -f sum_column input_file.
  1. Usando -f - Quando codificando, muitas vezes pode parecer impraticável se referir ao terminal. Awk usa -f para executar a pesquisa de um arquivo: script AWK -F.Awk InputFile
  1. Executando funções matemáticas - Você também pode usar o AWK para funções matemáticas simples: awk 'sum = $ 2 + $ 3 + $ 4; avg = soma / 3
    > Imprimir $ 1, AVG '
  1. Olá mundo em Awk - Você pode imprimir um mundo de olá simples em Awk usando o seguinte comando: Awk "Begin print" Hello World!!""

    Você também pode criar um programa Hello World. O código a seguir não apenas imprimirá a onipresente mensagem Hello, mas também gerará informações sobre o cabeçalho:

    $ AWK 'BEGIN PRIM "Hello World!" '
  1. Imprimindo o número total de bytes - Você pode descobrir o total de bytes usados ​​pelos arquivos usando o seguinte comando: ls -l . | awk 'x += $ 5; FIM \
    Imprimir "Total Bytes:" X '
    Bytes totais: 7449362
  1. Anonimizando um log do Apache - Você pode usar o seguinte código para anonimizar um log Apache: Cat Apache-Anon-Noadmin.log | \
    função awk 'ri (n) \
    return int (n*rand ()); \
    Comece srand (); se (! \
    ($ 5 em Jack)) \
    jack [$ 5] = sprintf ("%d.%d.%d.%d ", \
    RI (255), RI (255) \
    , RI (255), RI (255)); \
    $ 5 = jack [$ 5]; imprimir __g5_token5b610ba53dbe4 '
  1. Operando em linhas - Se você tiver um endereço que gostaria de classificar em linhas, pode fazê -lo usando o seguinte comando: Begin rs = ""; Fs = "\ n"

    Imprimir "Nome Is:", $ 1
    Imprimir "Endereço é:", $ 2
    Imprimir "City and State são:", US $ 3
    imprimir ""
  1. Usando o loop while - O loop enquanto continua executando a ação dada a ele em um processo repetido até que a condição seja verdadeira. Por exemplo, para imprimir números de 1 a 100, você pode usar o seguinte código: Awk 'BEGIN i = 1; enquanto eu < 100) print i; ++i '
  1. Usando o loop do dado-while - Nesse loop, a condição é executada no final do loop, mesmo que a declaração seja falsa. Por exemplo, para imprimir números de 1 a 100 usando um loop do dado-while, você pode usar o seguinte código: Awk 'BEGIN i = 1; fazer print i; ++ i while (eu < 100) '
  1. Usando Begin e End - A palavra -chave BEGN é usada para criar um cabeçalho para processar seu registro: $ awk 'Begin print "xxx"

    Da mesma forma, a palavra -chave final é usada após o processamento dos dados:

    Final print "Footer" ''

Isso conclui a lista de 15 comandos AWK interessantes. Você pode experimentá -los e ver os resultados. Espero que você ache útil. Se você achou este artigo interessante, pode explorar o Mastering Linux Shell Script - Segunda Edição. Neste livro, você descobrirá tudo o que precisa saber para dominar scripts e fazer escolhas informadas sobre os elementos que você emprega.