Declarações condicionais em Awk

Declarações condicionais em Awk

As declarações condicionais são um dos recursos mais poderosos do AWK, permitindo que os usuários executem diferentes comandos com base nos valores de variáveis ​​ou expressões. Isso permite a criação de lógica complexa dentro de scripts AWK e facilita o desempenho de tarefas de processamento de texto avançado.

Neste tutorial, abordaremos o básico das declarações condicionais no AWK, incluindo a sintaxe e o uso da declaração 'if-else'. Por exemplo:

  1. Declarações if-else com awk
  2. Declaração de mudança com AWK
  3. Operadores ternários com AWK

Declaração if-else com awk

O 'if-else' A declaração é uma declaração condicional básica em Awk. Ele permite que você especifique diferentes comandos para executar com base em uma condição específica. A sintaxe para o 'if-else' A declaração é a seguinte:

if (condição) # comandos para executar se a condição for verdadeira else # comandos para executar se a condição for falsa
123456if (condição) # comandos para executar se a condição for verdadeira else # comandos para executar se a condição for falsa

Aqui, 'doença' é uma expressão booleana que avalia para verdadeira ou falsa. Se a condição for verdadeira, os comandos dentro dos aparelhos encaracolados seguintes 'se' são executados. Se a condição for falsa, os comandos dentro dos aparelhos encaracolados seguintes 'outro' são executados.

Por exemplo, digamos que temos um arquivo contendo uma lista de números e queremos imprimir os números maiores que 10. Podemos usar o 'if-else' Declaração para realizar esta tarefa da seguinte maneira:

awk 'if ($ 1> 10) print $ 1' números.TXT
1awk 'if ($ 1> 10) print $ 1' números.TXT

Aqui o 'se' Declaração verifica se o primeiro campo ($ 1) é maior que 10. Se for, o número é impresso. Se não for, nada acontece.

Você também pode usar o 'if-else' declaração para executar tarefas mais complexas. Por exemplo, digamos que temos um arquivo contendo uma lista de nomes de usuário e suas idades, e queremos imprimir os nomes de usuário de usuários com mais de 18 anos. Podemos usar a declaração 'if-else' para realizar esta tarefa da seguinte forma:

awk 'if ($ 2> 18) print $ 1 else print "user não tem idade suficiente"' usuários.TXT
1awk 'if ($ 2> 18) print $ 1 else print "user não tem idade suficiente"' usuários.TXT

Aqui o 'se' Declaração verifica se o segundo campo ($ 2) é maior que 18. Se for, o nome de usuário é impresso. Se não for, a string "Usuário não tem idade suficiente" é impressa.

Declaração de mudança com AWK

O 'trocar' A declaração no AWK permite executar diferentes comandos com base em várias condições. Fornece uma maneira mais concisa de expressar múltiplos 'if-else' declarações. A sintaxe para o 'trocar' A declaração é a seguinte:

switch (variável) case value1: # comandos para executar se variável == valor1 Valor do caso de interrupção 2: # comandos para executar se variável == value2 quebra… padrão: # comandos para executar se nenhum dos casos corresponde
1234567891011switch (variável) Case Value1: # comandos para executar se variável == valor1 Valor do caso de interrupção2: # comandos para executar se variável == value2 interrupção ... padrão: # comandos para executar se nenhum dos casos corresponde

Aqui, 'variável' é a variável ou expressão que você deseja comparar com diferentes valores. 'valor1', 'valor2', etc. são os diferentes valores que você deseja comparar. O 'quebrar' a declaração é usada para sair do 'trocar' declaração após uma partida é encontrada. O 'padrão' A palavra -chave é usada para especificar comandos para executar se nenhum dos casos corresponde.

Por exemplo, digamos que temos um arquivo contendo uma lista de linguagens de programação e queremos imprimir o nome da linguagem de programação com base na extensão do arquivo. Podemos usar o 'trocar' Declaração para realizar esta tarefa da seguinte maneira:

awk 'switch ($ nf) case "py": print "python"; quebrar; caso "rb": imprimir "ruby"; quebrar; caso "js": imprimir "javascript"; quebrar; Padrão: imprimir "desconhecido" 'idiomas.TXT
1awk 'switch ($ nf) case "py": print "python"; quebrar; caso "rb": imprimir "ruby"; quebrar; caso "js": imprimir "javascript"; quebrar; Padrão: imprimir "desconhecido" 'idiomas.TXT

Aqui, usamos o 'trocar' declaração para comparar o último campo ($ NF) contra valores diferentes ('py', 'rb', 'js'). Se o valor corresponder, imprimimos o nome da linguagem de programação. Se não corresponder, nós imprimimos "Desconhecido".

Operadores ternários com AWK

O 'Operador ternário' em Awk é uma versão abreviada do 'if-else' declaração. Ele permite que você execute uma operação simples de if-else em uma única linha. A sintaxe para o operador ternário é o seguinte:

(doença) ? Valor verdadeiro: Valor falso
1(doença) ? Valor verdadeiro: Valor falso

Aqui, 'doença'É a expressão booleana que você deseja avaliar. 'valor real' é o valor para retornar se a condição for verdadeira. 'Valor falso' é o valor para retornar se a condição for falsa.

Por exemplo, digamos que temos um arquivo contendo uma lista de números e queremos imprimir "Até" Se o número for par e "Chance" Se o número for estranho. Podemos usar o operador ternário para realizar esta tarefa da seguinte forma:

awk 'print ($ 1 % 2 == 0) ? "Até": "Odd" 'números.TXT
1awk 'print ($ 1 % 2 == 0) ? "Até": "Odd" 'números.TXT

Aqui, usamos o operador ternário para verificar se o número no primeiro campo ($ 1) é par ou estranho. Se for uniforme, nós imprimimos "Até". Se for estranho, nós imprimimos "Chance".

Conclusão

Em conclusão, as declarações condicionais são uma característica poderosa do AWK que permite aos usuários executar tarefas avançadas de processamento de texto. O 'if-else' A declaração é uma declaração condicional básica que permite executar diferentes comandos com base em uma condição específica. Dominando o 'if-else' Declaração e outras declarações condicionais, você pode se tornar mais eficaz e eficiente em seu script AWK e realizar tarefas complexas de processamento de texto com facilidade.