Pesquisa de site

10 Exemplos Incríveis de Comandos Awk


O comando Awk é uma ferramenta poderosa para processar dados. Ele obtém dados de entrada, os manipula e fornece resultados na saída padrão. Várias operações podem ser executadas em linhas e colunas de um arquivo.

Conhecer os fundamentos do comando “awk” é muito importante quando se trata de processar dados com eficiência, e esta postagem aborda os principais recursos do comando “awk”. Vamos verificar a sintaxe primeiro:

$ awk [options] [file]

Algumas das opções comumente usadas são dadas na tabela abaixo:

Option Description
-F To specify a file separator
-f Specify the file that contains the “awk” script
-v To assign variable

Vamos dar uma olhada em alguns exemplos sobre o uso do comando “awk ” e, para demonstração, criei um arquivo de texto com o nome de testFile.txt:

1. Como imprimir uma coluna de um arquivo com o comando awk?

O comando “awk ” pode ser usado para obter uma coluna específica do arquivo de texto. Para imprimir o conteúdo do arquivo use:

$cat testFile.txt

Agora, para imprimir a segunda coluna do arquivo, use:

$awk{print $2}’ testFile.txt

Para imprimir mais de um campo, use o comando:

$awk{print $1,$2,$3}’ testFile.txt

Se você não usar a vírgula “,”, a saída será sem espaços:

$awk{print $1$2$3}’ testFile.txt

2. Como usar expressões regulares com o comando awk:

Para corresponder as strings ou qualquer expressão, usamos barras “//”, por exemplo, se você quiser imprimir os nomes das pessoas que estão estudando “História”, então use:

$awk/History/ {print $2}’ testFile.txt

A saída mostra claramente que apenas “Sam” e “Tommy” estão cursando o curso de “História”.

3. Como usar a expressão relacional com o comando “awk”:

Para corresponder ao conteúdo de um campo específico, a expressão relacional pode ser usada. Para corresponder qualquer string ou expressão a um campo, indique o campo e use o operador de comparação “~” com o padrão apresentado no seguinte comando:

$awk$3 ~/is/ {print $2}’ testFile.txt

A saída acima exibindo cada campo na coluna 2 em relação a cada campo que contém “é” na coluna 3.

E para obter a saída oposta do comando acima, use o comando “! ~” operador:

$awk$3! ~/is/ {print $2}’ testFile.txt

Para comparação, também podemos usar operadores como maior que “>” e menor que “<” e igual a “=” também:

$awk$4>70 {print $2}’ testFile.txt

A saída imprimiu os nomes das pessoas que obtiveram notas acima de 70.

4. Como usar o padrão de intervalo com o comando awk:

Um intervalo também pode ser usado para pesquisa; basta usar a vírgula “, ” para separar o intervalo conforme apresentado no comando abaixo:

$awk/Joel/, /Marlene/ {print $3}’ testFile.txt

A saída mostra os assuntos do intervalo de “Joel ” a “Marlene ” da coluna 2. Podemos usar o sinal de igual duplo “== ” para definir um intervalo; veja o exemplo abaixo:

$awk$4 == 80, $4 == 90 {print $0}’ testFile.txt

A saída exibe os nomes das pessoas da coluna 2 para o intervalo de notas “70 a 80” da coluna 4.

5. Como combinar padrão usando o operador lógico:

O uso de operadores lógicos como OR “||, ” AND “&& ” permite combinar padrões para pesquisa. Use o seguinte comando

$awk$4>80 && $6>0.4 {print $2}’ testFile.txt

O comando acima imprime os nomes das pessoas no quarto campo mais significativo que 80 e no sexto campo maior que 0,4. E apenas dois registros estão cumprindo a condição.

6. As expressões especiais do comando awk:

Existem duas expressões especiais, “BEGIN ” e “END ”:

BEGIN: Para executar uma ação antes que os dados sejam processados

END: Para executar uma ação após o processamento dos dados

$awk ‘BEGIN {print “Processing has begun”}; {print $2}; END {print “Processing has ended”}’ testFile.txt

7. A variável interna útil do comando awk:

O comando awk possui diversas variáveis que auxiliam no processamento dos dados:

NF

Dá o número de campos nos dados

NR

Dá o número do registro atual

FILENAME

Exibe o nome do arquivo que está sendo processado no momento

FS and OFS

Separador de campo e separador de campo de saída

RS and ORS

Separa o registro e o separador de registro de saída

Por exemplo:

$awk ‘END{print “The file name is ” FILENAME “has” NF “fields and” NR “records”}’ testFile.txt

Usamos “END”, mas se você usar “BEGIN”, a saída daria 0 campos e 0 registros.

8. Como alterar o separador de registro:

O separador padrão no registro geralmente é um espaço; se houver vírgula “,” ou ponto “. ” como seu separador de campo, então use a opção “FS ” junto com o separador.

Vamos ter outro arquivo onde os campos de dados são separados por vírgula e dois pontos “:”:

$cat testFile2.txt

$awk ‘BEGIN {FS= “:”} {print $2}’ testFile2.txt

Como o separador do arquivo é dois pontos, mas o comando “awk” até é benéfico para arquivos assim, basta usar a opção “FS”.

O “-F” também pode ser usado:

$awk -F “:” ‘{print $2}’ testFile2.txt

O separador de registro padrão é “nova linha” e para definir o separador de registro como “:”, use:

$awk ‘BEGIN {RS = “:”}{print $1}’ testFile2.txt

9. Ações do Awk:

Ações Awk são pequenos programas que estão entre colchetes “{}” e têm mais de uma instrução separada por ponto-e-vírgula”; ”.

A instrução mais usada com o comando “awk” é a instrução “print”. Por exemplo, para imprimir um texto com cada registro, use a string de texto entre aspas:

$awk{“The is a field,” $2}’ testfile.txt

Vamos realizar uma simples operação de soma usando o awk:

$awk{sum += $4} END {printf%d\n”, sum}’ testFile.txt

10. Criando um programa awk:

Vamos começar com a programação “awk”, a programação abaixo é simplesmente fazer a multiplicação:

BEGIN {
i=2
while(j<4)
{
print “The multiplication of 2 with”  j “ is ” i*j;
j++
}
}

Salve o programa com o nome de “myCode.awk ” e para executá-lo, abra o terminal e digite:

$awk -f myCode.awk

Conclusão:

O comando “awk” é um comando útil para processar, digitalizar dados de arquivos de texto, como separar qualquer campo específico de um arquivo; usamos o comando “awk”. Isso torna mais fácil pesquisar qualquer coisa em qualquer forma ou padrão nos arquivos de texto. Neste guia, entendemos os fundamentos do comando “awk” e seu uso. O comando “awk ” valida dados, gera relatórios e até analisa arquivos. O uso de comandos simples “awk” também permite que os usuários escrevam pequenos programas para processar dados com mais eficiência.

Artigos relacionados: