Cómo usar Awk para imprimir campos y columnas en un archivo

Cómo usar Awk para imprimir campos y columnas en un archivo

En esta parte de nuestra serie de comandos de Linux Awk, veremos una de las características más importantes de Awk. que es la edición de campo.

Es bueno saber que Awk. divide automáticamente las líneas de entrada que se le proporcionan en campos, y un campo se puede definir como un conjunto de caracteres que están separados de otros campos por un separador de campo interno.

 Awk Print Fields and Columns  Awk Print Fields and Columns Awk Print Fields and Columns

Si está familiarizado con Unix/Linux o hacer programación bash shell, luego y Debe saber qué es la variable de separador de campo interno ( IFS. . Los IFS predeterminados en Awk son tabulación y espacio.

Así es como funciona la idea de separación de campos en Awk. cuando encuentra una línea de entrada, de acuerdo con el IFS definido, el el primer conjunto de caracteres es el campo uno, al que se accede mediante $ 1. el segundo conjunto de caracteres es el campo dos, al que se accede mediante $ 2. el tercer conjunto de caracteres es el campo tres, al que se accede usando $ 3. y así sucesivamente hasta el último conjunto de caracteres.

Para comprender mejor la edición de este campo Awk, echemos un vistazo a los ejemplos a continuación:

freestar.config.enabled_slots.push

Ejemplo 1:. He creado un archivo de texto llamado tecmintinfo.txt.

# vi tecmintinfo.txt # cat tecmintinfo.txt  Crear archivo en Linux  Crear archivo en Linux Crear archivo en Linux

Luego, desde la línea de comandos, intento imprimir el primer. segundo. y tercer. campos del archivo tecmintinfo.txt. usando el comando a continuación:

$ awk ‘//print $ 1 $ 2 $ 3’ tecmintinfo.txt. TecMint.comisthe

De la salida anterior, puede ver que los caracteres de los primeros tres campos se imprimen según el IFS. definido cuál es el espacio:

  1. Se accede al campo uno que es “TecMint.com”. usando $ 1.
  2. Se accede al campo dos, que es “es”. mediante $ 2.
  3. Campo tres que es “el”. se accede usando $ 3.

Si ha notado en la salida impresa, los valores de los campos no están separados y así es como se comporta la impresión por predeterminado.

Para ver la salida claramente con espacio entre los valores de campo, debe agregar el operador (,) de la siguiente manera:

$ awk ‘//imprimir $ 1, $ 2, $ 3; ‘tecmintinfo.txt. TecMint.com es

Una cosa importante a tener en cuenta y recordar siempre es que el uso de ($) en Awk. es diferente de su uso en scripts de shell .

En shell scripting ($) se usa para acceder al valor de las variables, mientras que en Awk. ($) se usa solo cuando se accede al contenido de un campo pero no para acceder el valor de las variables.

Ejemplo 2:. Veamos otro ejemplo usando un archivo que contiene varias líneas llamado my_shoping.list.

No Item_Name Unit_Price Cantidad Precio 1 Mouse # 20,000 1 # 20,000 2 Monitor # 500,000 1 # 500,000 3 RAM_Chips # 150,000 2 # 300,000 4 Ethernet_Cables # 30,000 4 # 120,000

Diga usted quería imprimir solo Unit_Price de cada artículo en la lista de compras, deberá ejecutar el siguiente comando:

$ awk ‘//print $ 2, $ 3’ my_shopping .txt. Item_Name Unit_Price Mouse # 20,000 Monitor # 500,000 RAM_Chips # 150,000 Ethernet_Cables # 30,000

Awk. también tiene un comando printf que le ayuda a formatear su salida es una buena manera como puede ver que la salida anterior no es lo suficientemente claro.

Usando printf para formatear la salida de Item_Name. y Unit_Price.

$ awk ‘//printf “%-10s% s \ n”, $ 2, $ 3’ my_shopping.txt. Item_Name Unit_Price Mouse # 20,000 Monitor # 500,000 RAM_Chips # 150,000 Ethernet_Cables # 30,000

Resumen

La edición de campo es muy importante cuando se usa Awk. para filtrar texto o cadenas, le ayuda a obtener datos particulares en columnas en un lista. Y recuerde siempre que el uso del operador ($) en Awk. es diferente al de las secuencias de comandos de shell.

Espero que el artículo haya sido útil para usted y para cualquier información adicional requerida o preguntas, puede publicar un comentario en la sección de comentarios.