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ê.

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

imagem da saída de dstat

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


Artigos relacionados