AWK - Fluxo de Trabalho

Para se tornar um programador AWK especialista, você precisa conhecer seus aspectos internos. AWK segue um fluxo de trabalho simples - Ler, Executar e Repetir. O diagrama a seguir descreve o fluxo de trabalho do AWK -

Ler

AWK lê uma linha do fluxo de entrada (arquivo, canal ou stdin) e a armazena na memória.

Executar

Todos os comandos AWK são aplicados sequencialmente na entrada. Por padrão, o AWK executa comandos em todas as linhas. Podemos restringir isso fornecendo padrões.

Repetir

Este processo se repete até que o arquivo chegue ao fim.

Estrutura do Programa

Vamos agora entender a estrutura do programa AWK.

Bloco BEGIN

A sintaxe do bloco BEGIN é a seguinte -

Syntax

BEGIN {awk-commands}

O bloco BEGIN é executado na inicialização do programa. Ele é executado apenas uma vez. Este é um bom lugar para inicializar variáveis. BEGIN é uma palavra-chave AWK e, portanto, deve estar em maiúsculas. Observe que este bloqueio é opcional.

Bloco de Corpo

A sintaxe do bloco de corpo é a seguinte -

Syntax

/pattern/ {awk-commands}

O bloco de corpo aplica comandos AWK em cada linha de entrada. Por padrão, o AWK executa comandos em todas as linhas. Podemos restringir isso fornecendo padrões. Observe que não há palavras-chave para o bloco Body.

Bloco END

A sintaxe do bloco END é a seguinte -

Syntax

END {awk-commands}

O bloco END é executado no final do programa. END é uma palavra-chave AWK e, portanto, deve estar em maiúsculas. Observe que este bloqueio é opcional.

Vamos criar um arquivo marks.txt que contém o número de série, nome do aluno, nome da disciplina e número de notas obtidas.

1)  Amit    Physics  80
2)  Rahul   Maths    90
3)  Shyam   Biology  87
4)  Kedar   English  85
5)  Hari    History  89

Vamos agora exibir o conteúdo do arquivo com cabeçalho usando o script AWK.

Example

[jerry]$ awk 'BEGIN{printf "Sr No\tName\tSub\tMarks\n"} {print}' marks.txt

Quando este código é executado, ele produz o seguinte resultado -

Output

Sr No Name Sub Marks
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89

No início, AWK imprime o cabeçalho do bloco BEGIN. Em seguida, no bloco do corpo, ele lê uma linha de um arquivo e executa o comando de impressão do AWK, que apenas imprime o conteúdo no fluxo de saída padrão. Este processo se repete até que o arquivo chegue ao fim.