Como usar a instrução condicional no comando awk
A instrução condicional é usada em qualquer linguagem de programação para executar qualquer instrução com base em uma condição específica. A instrução condicional é executada com base no valor true ou false quando as instruções if-else e if-elseif são usadas para gravar a instrução condicional na programação. Awk suporta todos os tipos de instruções condicionais como outras linguagens de programação. Como diferentes instruções condicionais podem ser usadas no comando awk é mostrado neste tutorial.
Sintaxe:
A sintaxe para quatro tipos de instruções condicionais é mencionada abaixo.
se declaração
statement
}
A instrução é executada quando a condição if retorna true.
declaração if-else
statement-1
}
else{
statement-2
}
A instrução-1 é executada quando a condição if é verdadeira e a instrução-2 é executada quando if retorna falso.
declaração if-elseif
statement-1
}
elseif{
statement-2
}
elseif{
statement-3
}
…….
else{
statement-n
}
Esta instrução condicional é usada para executar uma instrução baseada em várias condições if. Se a primeira condição for falsa, ele verifica a segunda condição. Se a segunda condição for falsa, ele verifica a terceira condição e assim por diante. Se todas as condições retornarem falsas, ele executará a instrução da outra parte.
Operador ternário (?:)
O operador ternário pode ser usado como uma alternativa à instrução if-else. Se a condição for verdadeira, a instrução-1 será executada e, se a condição for falsa, a instrução-2 será executada.
Exemplo-1: usando if simples em awk
Crie um arquivo de texto chamado emplyee.txt com o seguinte conteúdo. Suponha que você precise descobrir o nome do departamento, a idade e o salário do funcionário cujo id é 11002.
employee.txt
11002 HR 32 $1500
11003 Marketing 26 $1200
11004 HR 25 $2500
Uma condição if simples é usada no script a seguir para pesquisar o id 11002 no primeiro campo do arquivo. Se a condição for verdadeira então imprimirá os valores dos demais campos da linha correspondente senão nada será impresso.
if($1 =="11002")
{
print "Department Name: ",$2,"\n";
print "Age: ",$3,"\n";
print "Salary: ",$4,"\n";
}
}' employee.txt
Saída:
O id, 1102 existe no arquivo. Assim, imprimiu os demais valores do funcionário.
Exemplo-2: Usando if-else em awk
Suponha que você queira imprimir as informações de salário dos funcionários cuja idade é menor ou igual a 40 anos e imprimir as informações de idade dos outros funcionários. O seguinte script awk pode fazer esta tarefa. Há apenas um funcionário no arquivo employee.txt cuja idade é superior a 40 anos e todos os outros funcionários têm menos de 40 anos.
if($3 <= 40)
{
print "The salary of ",$1, " is ", $4, "\n"
}
else
{
print "The age of ",$1, " is ", $3, "\n"
}
}' employee.txt
Saída:
A saída a seguir aparecerá após a execução do script.
Exemplo-3: Usando if-elseif no script awk
Crie um arquivo de texto chamado person.txt com o seguinte conteúdo.
pessoa.txt
MARTIN Male Service Holder
LILY Female Manager
ROBINSON Male CEO
Crie um arquivo awk chamado if_elseif.awk com o seguinte código para imprimir a cor favorita de cada pessoa cujo nome existe no arquivo. A instrução if-elseif é usada no script para executar essa tarefa. O script lerá o primeiro valor de campo do arquivo, employee.txt e verificará com um valor específico. Se a primeira condição if tornar-se falsa, ele verificará a segunda condição if e assim por diante. Quando qualquer condição if se tornar verdadeira, um valor de cor será atribuído. Se todas as condições se tornarem falsas, Nenhum será atribuído como o valor da cor. A cor favorita de cada pessoa será impressa ou “Nenhuma pessoa encontrada ” será impressa se nenhum nome de pessoa corresponder.
if_elseif.awk
name=$1;
if ( name=="JACKSON" ) color="Blue";
else if (name=="MARTIN") color="Black";
else if (name=="LILY") color="Red";
else if (name=="ROBINSON") color="White";
else color="None";
if(color!="None") print "The favorite color of ", name, "is ", color;
else print "No person found";
}
Execute o seguinte comando para executar o arquivo if_elseif.awk com person.txt
Saída:
A seguinte saída aparecerá após a execução do comando.
Exemplo-4: Usando operador ternário em awk
O terceiro campo do arquivo person.txt contém a profissão de cada pessoa. O operador ternário a seguir lê cada linha do arquivo e compara o valor do terceiro campo com “Gerente ”. Se o valor corresponder, ele imprimirá o nome da pessoa e, caso contrário, imprimirá o sexo da pessoa.
Saída:
A saída a seguir aparecerá após a execução do script. Existe uma pessoa com a "profissão de Gerente" no person.txt. Assim, o nome de uma pessoa é impresso e o gênero é impresso para outras pessoas.
Exemplo-5: usando várias condições na instrução if
O OR lógico e o AND lógico podem ser usados para definir várias condições na instrução condicional do script awk. O script awk a seguir lê cada linha de employee.txt e verifica a idade e a designação com valores específicos. O AND lógico é usado na condição if . Quando o valor da idade for maior ou igual a 30 e a designação for “HR” então o id do funcionário e o salário correspondentes serão impressos.
$1, " and ", "Salary: ", $4, "\n";}' employee.txt
Saída:
A saída a seguir aparecerá após a execução do script. Existe apenas um funcionário com a designação “HR ” em employee.txt. As informações de identificação e salário deste funcionário são impressas aqui.
Conclusão:
Os usos mais comuns da instrução condicional de qualquer programação padrão são suportados pelo comando awk. Como você pode usar condições únicas e múltiplas em awk é explicado usando exemplos muito simples aqui. Espero que depois de praticar esses exemplos, o aluno seja capaz de usar a instrução condicional corretamente no script awk.