Cómo usar el comando ‘siguiente’ con Awk en Linux-Parte 6

Cómo usar el comando ‘siguiente’ con Awk en Linux-Parte 6

En esta sexta parte de la serie Awk, veremos el uso del siguiente comando, que le dice a Awk. que omita todos los patrones y expresiones restantes que haya proporcionado, pero en su lugar lea la siguiente línea de entrada.

El siguiente comando le ayuda a evitar la ejecución de lo que yo llamaría pasos de pérdida de tiempo en la ejecución de un comando.

Para entender cómo funciona, consideremos un archivo llamado food_list.txt. que se ve así:

Elementos de la lista de alimentos No Item_Name Precio Cantidad 1 Mangos $ 3.45 5 2 Manzanas $ 2.45 25 3 Piñas $ 4.45 55 4 Tomates $ 3.45 25 5 Cebollas $ 1.45 15 6 Bananas $ 3.45 30

Considere ejecutar el siguiente comando que marcará los alimentos cuya cantidad sea menor o igual a 20. con un (*) signo al final de cada línea:

# awk ‘$ 4 <= 20 printf "% s \ t% s \ n", $ 0, "* "; $ 4> 20 print $ 0; ‘food_list.txt. No Item_Name Precio Cantidad 1 Mangos $ 3.45 5. *. 2 manzanas $ 2,45 25 3 piñas $ 4,45 55 4 tomates $ 3,45 25 5 cebollas $ 1,45 15. *. 6 Bananas $ 3.45 30

El comando anterior en realidad funciona de la siguiente manera:

  1. Primero, verifica si la cantidad, el cuarto campo de cada línea de entrada es menor que o igual a 20. si un valor cumple esa condición, se imprime y se marca con el signo (*) al final usando la expresión uno: $ 4 <= 20
  2. En segundo lugar, comprueba si el cuarto campo de cada línea de entrada es mayor que 20. y si una línea cumple la condición, se imprime usando la expresión dos: $ 4> 20

freestar.config. enabled_slots.push (pl acementName: “tecmint_incontent”, slotId: “tecmint_incontent”);

Pero hay un problema aquí, cuando se ejecuta la primera expresión. una línea que queremos marcar se imprime usando: printf “% s \ t% s \ n”, $ 0, “**”; y luego, en el mismo paso, también se verifica la segunda expresión. lo que se convierte en un factor de pérdida de tiempo.

Por lo tanto, no es necesario ejecutar la segunda expresión, $ 4> 20 nuevamente después de imprimir líneas ya marcadas que se han impreso usando la primera expresión.

Para solucionar este problema, debe usar el siguiente comando de la siguiente manera:

# awk ‘$ 4 <= 20 printf"% s \ t% s \ n ", $ 0," * "; Siguiente; $ 4> 20 print $ 0; ‘food_list.txt. No Item_Name Precio Cantidad 1 Mangos $ 3.45 5. *. 2 manzanas $ 2,45 25 3 piñas $ 4,45 55 4 tomates $ 3,45 25 5 cebollas $ 1,45 15. *. 6 Plátanos $ 3.45 30

Después de imprimir una sola línea de entrada usando $ 4 <= 20 printf"% s \ t% s \ n ", $ 0," * "; Siguiente ; , el siguiente comando incluido ayudará a omitir la segunda expresión $ 4> 20 print $ 0;, por lo que la ejecución pasa a la siguiente línea de entrada sin tener que perder tiempo comprobando si la cantidad es mayor que 20. .

El comando siguiente. es muy importante es escribir comandos eficientes y, cuando sea necesario, siempre se puede utilizar para acelerar la ejecución de un script. Prepárese para la siguiente parte de la serie donde veremos el uso de la entrada estándar (STDIN). como entrada para Awk.

Espero que encuentre esto cómo para guiar útil y, como siempre, puede poner sus pensamientos por escrito dejando un comentario en la sección de comentarios a continuación.