Como começar a usar o awk
awk, sed e grep são três das minhas ferramentas favoritas na linha de comando Linux ou UNIX. Eles são todos muito poderoso. Hoje vamos olhar para a forma de começar rachando com awk para ajudá-lo a facilidade em usá-lo. Então, vamos olhar algumas úteis awk forros para tornar as coisas um pouco mais divertido para você.
Conteúdo
AWK é uma linguagem de programação projetada para o processamento de dados baseados em texto, seja em arquivos ou fluxos de dados. Ele foi criado na Bell Labs na década de 1970. Embora seja bastante antiga, não se deixe enganar por ele de idade. É extremamente poderoso e eficiente no que faz. Vamos chegar em nossas mãos sujas agora.
Antes de mergulhar no trabalho complexo e uso de awk vamos começar nele é básico. Vamos criar e usar um arquivo fictício para este exercício. Você pode usar praticamente qualquer arquivo de texto, como um log do seu sistema. I será utilizando um exemplo de saída de uma das minhas ferramentas favoritas de monitoramento do sistema - Dstat. Aqui está a saída:
Video: Tutorial programacion en awk 1. Introducción
Esta é uma saída ideal para awk de manusear. awk é grande com vírgula ou teor de guia separados. Você verá porque em breve. Assim, ou criar alguns dados semelhantes ou copie e cole o meu exemplo acima em um arquivo fictício chamado algo como test.txt. Lançar uma janela de terminal no seu computador Linux. Quase todos os sabores de Linux navio com awk. No caso de você ter encontrado um que não tê-lo por algum motivo, por favor instale-o. Na janela de terminal digite o seguinte a partir do diretório onde você armazenou o arquivo test.txt -
# Awk { ‘print `} test.txt
A saída deve conter todo o conteúdo do arquivo de texto. Qual é a diversão nisso.
Agora vamos ver como você pode escolher uma coluna e imprimir apenas aquele. Execute o seguinte comando:
# Awk { ‘print $ 1 `} test.txt
Agora estamos pedindo awk para imprimir apenas a primeira coluna do arquivo de texto. Ele irá determinar automaticamente se o arquivo é um guia separados um e imprimir apenas a primeira coluna do conteúdo. Você deve ver algo como isso na saída:
--total-CPU-usage--
usr
5
13
8
0
1
1
1
0
1
1
Você pode fazer o mesmo para qualquer coluna que quiser. Se você quiser awk para imprimir o terceiro comando de alteração de coluna acima comando mostrado a:
# Awk { ‘print $ 3 `} test.txt
Você também pode ter awk imprimir várias colunas. Então se você quer a primeira, terceira e sétima colunas impressas adicioná-los ao comando separados por vírgulas.
# Awk { ‘print $ 1, $ 3, US $ 7 `} test.txt
faria o truque para você:
--total-CPU-usage-- -net / total-
usr IDL ler
5 93 154k
13 87 0
8 92 0
0 99 0
1 97 0
1 98 0
1 99 0
0 99 0
1 99 0
1 100 0
Video: Linux AWK
Se você tem um arquivo mais complicado como o arquivo / etc / password onde os dados são separados por dois pontos vez que os espaços ou tabulações, awk não pegá-lo automaticamente. Nesses casos, você pode alimentar awk com o separador correto. Use um comando como este para imprimir a segunda coluna do arquivo:
# Awk -F `:` { ‘print $ 1 `} / etc / passwd
Video: Using Linux AWK Utility
Este comando vai lhe dar uma saída dos nomes de todos os usuários em seu sistema:
maçã
manga
banana
Melancia
kiwi
laranja
Você pode fazer o mesmo com qualquer outro tipo de separadores. Você também pode usar awk para analisar seus arquivos de log. Por exemplo, se você quiser ver todos os endereços IP e os URLs da web relacionados que foram acessa no seu servidor web, você pode usar awk para analisar o log de acesso do seu servidor web para obter essa informação. Use o seguinte comando:
# Awk ‘$ 9 == 200 {print $ 1, $ 7}` access.log
199.63.142.250 / 2008/10 / meu-5-favoritos-hangouts /
220.180.94.221 / 2009/02 / querious-a-mysql-client-para-o-mac /
67.190.114.46 / 2009/05 /
173.234.43.110 / 2009/01 / bicicleta de aluguel /
173.234.38.110 /wp-comments-post.php
Usando a análise de como este que você pode descobrir se alguém está visitando seu site muito, pois eles podem estar roubando informações. Você também pode classificar esta informação. Digamos que você queria saber quantas vezes um determinado endereço IP visitou seu site
# Awk ‘$ 9 == 200 {print $ 1}` access.log | tipo | uniq -c | tipo NR
46 122.248.161.1
35 122.248.161.2
26 65.202.21.10
24 67.195.111.46
19 144.36.231.111
18 59.183.121.71