Como usar o comando 'Next' com AWK no Linux - Parte 6

Como usar o comando 'Next' com AWK no Linux - Parte 6

Nesta sexta parte da série AWK, vamos olhar para usar próximo comando, que diz Awk Para pular todos os padrões e expressões restantes que você forneceu, mas leia a próxima linha de entrada.

O próximo O comando ajuda você a impedir a execução do que eu me referiria como etapas de desperdício de tempo em uma execução de comando.

Para entender como funciona, vamos considerar um arquivo chamado Food_list.TXT isso se parece com o seguinte:

Itens da lista de alimentos
Sem item_name Preço Quantidade 1 mangas $ 3.45 5 2 maçãs $ 2.45 25 3 abacaxi $ 4.45 55 4 tomates $ 3.45 25 5 Onions $ 1.45 15 6 Bananas $ 3.45 30 

Considere executar o seguinte comando que sinalizará itens alimentares cuja quantidade é menor ou igual a 20 com um (*) Assine no final de cada linha:

# awk '$ 4 20 print $ 0;' Food_list.TXT Sem item_name Preço Quantidade 1 mangas $ 3.45 5 * 2 maçãs $ 2.45 25 3 abacaxi $ 4.45 55 4 tomates $ 3.45 25 5 Onions $ 1.45 15 * 6 bananas $ 3.45 30 

O comando acima realmente funciona da seguinte maneira:

  1. Primeiro, ele verifica se a quantidade, quarto campo de cada linha de entrada é menor ou igual a 20, Se um valor atingir essa condição, é impresso e sinalizado com o (*) Assine no final usando a expressão um: $ 4 <= 20
  2. Em segundo lugar, ele verifica se o quarto campo de cada linha de entrada é maior que 20, E se uma linha atender à condição, ela será impressa usando a expressão dois: $ 4> 20

Mas há um problema aqui, quando o Primeira expressão é executado, uma linha que queremos sinalizar é impressa usando: printf "%s \ t%s \ n", $ 0, "**"; E então na mesma etapa, o segunda expressão também é verificado, o que se torna um fator de perda de tempo.

Portanto, não há necessidade de executar a segunda expressão, $ 4> 20 novamente após a impressão já sinalizada linhas que foram impressas usando a primeira expressão.

Para lidar com esse problema, você precisa usar o próximo Comando o seguinte:

# awk '$ 4 20 print $ 0;' Food_list.TXT Sem item_name Preço Quantidade 1 mangas $ 3.45 5 * 2 maçãs $ 2.45 25 3 abacaxi $ 4.45 55 4 tomates $ 3.45 25 5 Onions $ 1.45 15 * 6 bananas $ 3.45 30 

Após uma única linha de entrada é impressa usando $ 4 <= 20 printf "%s \ t%s \ n", $ 0, "*"; próximo ; , o próximo O comando incluído ajudará a pular a segunda expressão $ 4> 20 print $ 0;, Portanto, a execução vai para a próxima linha de entrada sem ter que perder tempo para verificar se a quantidade é maior que 20.

O próximo O comando é muito importante é escrever comandos eficientes e, quando necessário, você sempre pode usar para acelerar a execução de um script. Prepare -se para a próxima parte da série, onde procuraremos usar a entrada padrão (Stdin) como entrada para Awk.

Espero que você encontre isso como orientar útil e que possa colocar seus pensamentos ao escrever, deixando um comentário na seção de comentários abaixo.