LinuxParty
Veremos el uso del comando "next", que le dice a Awk que omita todos los patrones y expresiones restantes que ha proporcionado, pero en su lugar lea la siguiente línea de entrada.
El comando "next" 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 tiene este aspecto:
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 Plátanos $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 Plátanos $3.45 30
El comando anterior en realidad funciona de la siguiente manera:
Primero, verifica si la cantidad, cuarto campo de cada línea de entrada es menor 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 En segundo lugar, verifica 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
Pero hay un problema aquí, cuando se ejecuta la primera expresión , se imprime una línea que queremos marcar 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 las líneas ya marcadas que se han impreso con la primera expresión.
Para lidiar con este problema, debe usar el comando "next" de la siguiente manera:
# awk '$4 <= 20 { printf "%s\t%s\n", $0,"*" ; next; } $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 que se imprime una sola línea de entrada usando $4 <= 20
{ printf "%s\t%s\n", $0,"*" ; next ; }
, el comando "next" 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 siguiente comando 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 útil esta guía y que, como siempre, pueda poner sus pensamientos por escrito dejando un comentario en la sección de comentarios a continuación.

-
Espacio
- El primer satélite construido con paneles de madera fue lanzado al espacio
- Lo que quise saber del Universo pero la mala divulgación no contó
- ¿Puede existir vida en el espacio sin un planeta? Un nuevo estudio revela una respuesta sorprendente
- Los competidores de SpaceX se esfuerzan por construir cohetes reutilizables
- Descifraron la señal ¡Wow!: y su resultado no te gustará
- Starlink ya está disponible en todos los vuelos Airbus de Hawaiian Airlines
- Hace 4.500 millones de años, otro planeta impactó contra la Tierra. Hemos encontrado sus restos.
- Estudio Revela que las Civilizaciones Avanzadas en la Vía Láctea Podrían ser Extremadamente Raras
- Plutón no regresará, pero los astrónomos quieren redefinir los planetas nuevamente
- La Voyager 1 regresa a las operaciones científicas normales
- China aterriza con éxito una sonda en la cara oculta de la Luna y comienza a recolectar muestras
- Un estudio confirma la predicción de Einstein: los agujeros negros tienen una "región que se hunde"
- La Voyager 1, la primera nave en el espacio interestelar, puede haberse quedado a oscuras
- Adiós al Ingenuity, Perseverence toma una foto del helicóptero dañado y abandonado en Marte.
- Una Kilonova a años luz de la tierra, representa un potencial peligro para nuestro planeta