Awk: aprendendo scripts de shell usando o comando de terminal awk

Awk: aprendendo scripts de shell usando o comando de terminal awk

Awk: aprendendo scripts de shell usando o comando de terminal awk

O comando "awk" em Sistemas Operacionais Livres do tipo GNU / Linux é um comando muito poderoso, que nos ajuda a ter um maior controle no processamento de dados de outros comandos ou comandos de comando. O nome AWK deriva das iniciais dos sobrenomes de seus autores: Alfred Aho, peter Weinberger e Brian KErnighan.

Este comando fornece uma linguagem de script para processamento de texto com a qual podemos: Definir variáveis, usar strings e operadores aritméticos, usar controle de fluxo e ciclos e gerar relatórios formatados. Na verdade, Awk é mais do que apenas um comando de processamento de padrões, é uma linguagem de análise semântica completa.

Introdução ao comando "awk"

AWK foi um dos primeiros utilitários de console muito populares a gerenciar (manipular / extrair) dados maximizando a funcionalidade dos canais UNIX. A linguagem fornecida por este utilitário é atualmente um padrão em quase todos os sistemas operacionais do tipo UNIX modernos, tanto que faz parte das especificações básicas do UNIX, portanto, geralmente já está instalado na maioria deles por padrão.

Sua sintaxe mais comum é: awk 'programas' arquivos e onde 'programa' pode ser: padrão {ação} padrão {ação}. O comando lê a entrada do arquivo uma linha por vez. Cada linha é comparada a cada padrão em ordem; Para cada padrão que corresponde à linha, a ação correspondente é executada.

Um exemplo simples como:

awk -F: '$1=="root" {print}' /etc/passwd

ele pergunta pelo primeiro campo se ele é a raiz de cada linha em / etc / passwd e o imprime considerando o ":" com -F: como um separador de campo.

Awk de exemplo introdutório

Exemplos práticos

Lista de comandos mais usados

Visualize uma lista com base no histórico do terminal do sistema ordenado do mais usado para o menos usado.

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

Exemplo:

Exemplo 1: comando Awk

Gráfico (Tabela) com número de conexões para cada host

Crie um gráfico baseado em texto ASCII que mostra o número total de conexões do host para cada endereço IP.

netstat -an | grep ESTABLISHED | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | awk '{ printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++) {printf("*")}; print "" }'

Exemplo:

Exemplo 2: comando Awk

Lista de diretórios por tamanho

Imprime na tela a lista de diretórios do caminho atual do maior para o menor exibindo os rótulos correspondentes ao seu tamanho usando as letras: g, m e k.

du --max-depth=1 | sort -r -n | awk '{split("k m g",v); s=1; while($1>1024){$1/=1024; s++} print int($1)" "v[s]"\t"$2}'

Exemplo:

Exemplo 3: comando Awk

Mostrar o tráfego de uma interface de rede

Visualize o consumo de dados de entrada e saída online em kilobytes (kb) para uma interface de rede especificada.

while [ /bin/true ]; do OLD=$NEW; NEW=`cat /proc/net/dev | grep eth0 | tr -s ' ' | cut -d' ' -f "3 11"`; echo $NEW $OLD | awk '{printf("\rin: % 9.2g\t\tout: % 9.2g", ($1-$3)/1024, ($2-$4)/1024)}'; sleep 1; done

Exemplo:

Obtenha uma série de números de Fibonacci

Crie uma lista de números de quantidade X seguindo um padrão de fibonacci com 2 números de base a serem construídos.

seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'

Exemplo:

Exemplo 5: comando Awk

Lista gráfica da estrutura do arquivo por tamanho

Obtenha uma lista de todas as pastas na raiz do sistema operacional junto com o gráfico (barras) e a representação numérica como uma porcentagem de seu tamanho dentro dela.

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');sudo du / --max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++){printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

Exemplo:

Exemplo 6: comando Awk

Liste um resumo dos tipos de arquivo em um diretório

Mostra uma lista dos tipos de arquivos contidos em um diretório junto com o número de arquivos que correspondem a ele.

find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g

Exemplo:

Exemplo 8: comando Awk

Esses exemplos de linhas de comando usando o comando awk Espero que sejam muito úteis. E servem para serem usados ​​diretamente do console ou indiretamente inserindo-os em um script (tarefa automatizada).

Na próxima postagem sobre Shell Scripting, exploraremos outros comandos.

Se você quiser aprender um pouco mais sobre o comando "grep", visite este link "DEBIAN Wiki”E se você quiser aprender mais sobre Shell Scripting em nosso próprio Blog, você pode conferir nossas outras publicações sobre o assunto, clicando aqui: Scripting em FromLinux


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

      smoking dito

    Eu só entendi o primeiro exemplo, nada mais 🙁