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 usar próximo comando, que dice Asombrar Para omitir todos los patrones y expresiones restantes que ha proporcionado, pero en su lugar lea la siguiente línea de entrada.

El próximo El comando lo ayuda a evitar ejecutar a lo que me referiría como pasos de pérdida de tiempo en una ejecución de comando.

Para comprender cómo funciona, consideremos un archivo llamado Food_list.TXT Eso se ve así:

Artículos de la lista de alimentos
No hay item_name Price 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 es menor o igual a 20 con un (*) Firma al final de cada línea:

# awk '$ 4 20 imprimir $ 0;' Food_list.TXT No hay item_name Price 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 realmente funciona de la siguiente manera:

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

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

Entonces no hay necesidad de ejecutar la segunda expresión, $ 4> 20 nuevamente después de imprimir líneas ya marcadas que se han imprimido utilizando la primera expresión.

Para lidiar con este problema, debe usar el próximo Comando de la siguiente manera:

# awk '$ 4 20 imprimir $ 0;' Food_list.TXT No hay item_name Price 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, "*"; próximo ; , el próximo El comando incluido ayudará a omitir la segunda expresión $ 4> 20 Imprimir $ 0;, Por lo tanto, la ejecución va a la siguiente línea de entrada sin tener que perder el tiempo al verificar si la cantidad es mayor que 20.

El próximo El comando es muy importante es escribir comandos eficientes y cuando sea necesario, siempre puede usar 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 Asombrar.

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