Pesquisa de site

Como usar expressões compostas com Awk no Linux - Parte 5


O tempo todo, temos observado expressões simples para verificar se uma condição foi atendida ou não. E se você quiser usar mais de uma expressão para verificar uma condição específica?

Neste artigo, veremos como você pode combinar várias expressões chamadas expressões compostas para verificar uma condição ao filtrar texto ou strings.

No Awk, expressões compostas são construídas usando o && referido como (and) e o | | referido como operadores compostos (ou).

A sintaxe geral para expressões compostas é:

( first_expression ) && ( second_expression )

Aqui, first_expression e second_expression devem ser verdadeiros para tornar toda a expressão verdadeira.

( first_expression ) || ( second_expression) 

Aqui, uma das expressões first_expression ou second_expression deve ser verdadeira para que toda a expressão seja verdadeira.

Cuidado: Lembre-se de sempre incluir parênteses.

As expressões podem ser construídas usando os operadores de comparação que vimos na Parte 4 da série awk.

Vamos agora obter um entendimento claro usando um exemplo abaixo:

Neste exemplo, temos um arquivo de texto chamado tecmint_deals.txt, que contém uma lista de algumas ofertas aleatórias incríveis da Tecmint, incluindo o nome da oferta, o preço e o tipo.

No      Name                                    Price           Type
1       Mac_OS_X_Cleanup_Suite                  $9.99           Software
2       Basics_Notebook                         $14.99          Lifestyle
3       Tactical_Pen                            $25.99          Lifestyle
4       Scapple                                 $19.00          Unknown
5       Nano_Tool_Pack                          $11.99          Unknown
6       Ditto_Bluetooth_Altering_Device         $33.00          Tech
7       Nano_Prowler_Mini_Drone                 $36.99          Tech 

Digamos que queremos apenas imprimir e sinalizar negócios acima de $20 e do tipo “Tech ” usando o sinal (**) no final de cada linha.

Precisaremos executar o comando abaixo.

# awk '($3 ~ /^$[2-9][0-9]*\.[0-9][0-9]$/) && ($4=="Tech") { printf "%s\t%s\n",$0,"*"; } ' tecmint_deals.txt 

6	Ditto_Bluetooth_Altering_Device		$33.00		Tech	*
7	Nano_Prowler_Mini_Drone			$36.99          Tech	 *

Neste exemplo, usamos duas expressões em uma expressão composta:

  1. Primeira expressão, ($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/) ; verifica as linhas com negócios com preço acima de $20, e só é verdadeiro se o valor de $3 que é o preço corresponder ao padrão /^\$[ 2-9][0-9]*\.[0-9][0-9]$/
  2. E a segunda expressão, ($4 == “Tech”) ; verifica se o negócio é do tipo “Tech ” e só é verdadeiro se o valor de $4 for igual a “Tech ”.

Lembre-se, uma linha só será sinalizada com o (**), se a primeira expressão e a segunda expressão forem verdadeiras, conforme afirma o princípio do Operador &&.

Resumo

Algumas condições sempre exigem a construção de expressões compostas para que você corresponda exatamente ao que deseja. Quando você entender o uso de operadores de comparação e de expressão composta, filtrar texto ou strings com base em algumas condições difíceis se tornará fácil.

Espero que este guia seja útil para você e para qualquer dúvida ou acréscimo, lembre-se sempre de deixar um comentário e sua preocupação será resolvida adequadamente.