Como usar declarações de controle de fluxo em AWK - Parte 12

Como usar declarações de controle de fluxo em AWK - Parte 12

Quando você revisa todos os exemplos AWK que abordamos até agora, desde o início da série AWK, você notará que todos os comandos nos vários exemplos são executados sequencialmente, ou seja, um após o outro. Mas em determinadas situações, podemos querer executar algumas operações de filtragem de texto com base em algumas condições, é aí.

Use declarações de controle de fluxo em Awk

Existem várias declarações de controle de fluxo na programação AWK e incluem:

  1. Declaração if-else
  2. para declaração
  3. enquanto declaração
  4. declaração do-while
  5. declaração de quebra
  6. continue declaração
  7. Próxima declaração
  8. Declaração do próximo arquivo
  9. Declaração de saída

No entanto, para o escopo desta série, exporemos: if-else, para, enquanto e fazer enquanto declarações. Lembre -se de que já passamos por como usar a próxima declaração na Parte 6 desta série AWK.

1. A declaração if-else

A sintaxe esperada do If Declaração é semelhante ao da concha If Declaração:

if (condition1) ações1 else ação2 

Na sintaxe acima, condição1 e condição2 são expressões awk, e Ações1 e ações2 Os comandos AWK são executados quando as respectivas condições são satisfeitas.

Quando condição1 está satisfeito, o que significa que é verdade, então Ações1 é executado e o If Declaração sai, caso contrário ações2 É executado.

O If Declaração também pode ser expandido para um if-else_if-else declaração como abaixo:

if (condition1) ações1 else if (condições2) ações2 else ação3 

Para o formulário acima, se condição1 é verdade, então Ações1 é executado e o If Declaração sai, caso contrário condição2 é avaliado e se for verdade, então ações2 é executado e o If Declaração saídas. No entanto, quando condição2 é falso então, Ações3 é executado e o If Declaração saídas.

Aqui está um caso em ponto de usar Declarações se, Temos uma lista de Usuários e deles idades armazenado no arquivo, Usuários.TXT.

Queremos imprimir uma declaração indicando o nome de um usuário e se a idade do usuário é menor ou mais do que 25 anos.

[Email protegido] ~ $ usuários de gatos.TXT Sarah L 35 F Aaron Kili 40 m John Doo 20 m Kili Seth 49 m 

Podemos escrever um script de shell curto para realizar nosso trabalho acima, aqui está o conteúdo do script:

#!/bin/bash awk 'if ($ 3 <= 25 ) print "User",$1,$2,"is less than 25 years old." ;  else  print "User",$1,$2,"is more than 25 years old" ;  ' ~/users.txt 

Em seguida, salve o arquivo e saia, faça o script executável e execute -o da seguinte forma:

$ chmod +x teste.sh $ ./teste.sh 
Saída de amostra
O usuário Sarah L tem mais de 25 anos, o usuário Aaron Kili tem mais de 25 anos de idade, John Doo, tem menos de 25 anos. O usuário Kili Seth tem mais de 25 anos 

2. A declaração for

Caso você queira executar alguns comandos awk em um loop, então o para declaração Oferece a você uma maneira adequada de fazer isso, com a sintaxe abaixo:

Aqui, a abordagem é simplesmente definida pelo uso de um contador para controlar a execução do loop; primeiro você precisa inicializar o contador e depois executá -lo contra uma condição de teste, se for verdade, execute as ações e, finalmente, incrementar o contador. O loop termina quando o contador não satisfaz a condição.

para (contra-inicialização; condição de teste; contra-incremento) Ações 

O comando AWK a seguir mostra como o para declaração Trabalhos, onde queremos imprimir os números 0-10:

$ awk 'BEGIN for (contador = 0; contador<=10;counter++) print counter ' 
Saída de amostra
0 1 2 3 4 5 6 7 8 9 10 

3. A declaração do tempo

A sintaxe convencional do enquanto declaração é o seguinte:

while (condição) ações 

A condição é uma expressão AWK e as ações são linhas de comandos AWK executados quando a condição é verdadeira.

Abaixo está um script para ilustrar o uso de enquanto declaração Para imprimir os números 0-10:

#!/bin/bash awk 'begin contador = 0; enquanto (contador<=10) print counter; counter+=1 ;   

Salve o arquivo e faça o script executável e execute -o:

$ chmod +x teste.sh $ ./teste.sh 
Saída de amostra
0 1 2 3 4 5 6 7 8 9 10 

4. O DO DA DOMENSO

É uma modificação do enquanto declaração Acima, com a seguinte sintaxe subjacente:

fazer ações while (condição) 

A pequena diferença é que, sob fazer enquanto, Os comandos AWK são executados antes que a condição seja avaliada. Usando o próprio exemplo em enquanto declaração acima, podemos ilustrar o uso de fazer enquanto Alterando o comando AWK no teste.sh script da seguinte forma:

#!/bin/bash awk 'begin contador = 0; faça contador de impressão; contador+= 1;  while (contador<=10)  ' 

Depois de modificar o script, salve o arquivo e saia. Em seguida, faça o script executável e execute -o da seguinte forma:

$ chmod +x teste.sh $ ./teste.sh 
Saída de amostra
0 1 2 3 4 5 6 7 8 9 10 

Conclusão

Este não é um guia abrangente sobre declarações de controle de fluxo AWK, como eu mencionei anteriormente, existem vários outros Declarações de controle de fluxo em Awk.

No entanto, esta parte da série AWK deve fornecer uma idéia fundamental clara de como a execução dos comandos AWK pode ser controlada com base em determinadas condições.

Você também pode expor mais sobre o restante das declarações de controle de fluxo para obter mais entendimento sobre o assunto. Finalmente, na próxima seção da série AWK, vamos nos mudar para escrever scripts awk.