GNU/Linux >> Tutoriales Linux >  >> Linux

El comando AWK de Linux:ejemplos de sintaxis de uso de Linux y Unix

En esta guía para principiantes, aprenderá los conceptos básicos de awk dominio. También verá algunas de las formas en que puede usarlo cuando se trata de texto.

¡Empecemos!

¿Qué es el awk? comando?

awk es un lenguaje de secuencias de comandos y es útil cuando se trabaja en la línea de comandos. También es un comando ampliamente utilizado para el procesamiento de texto.

Al usar awk , puede seleccionar datos (uno o más fragmentos de texto individual) en función de un patrón que proporcione.

Por ejemplo, algunas de las operaciones que puedes hacer con awk está buscando una palabra o un patrón específico en un fragmento de texto dado, o incluso selecciona una determinada línea o una determinada columna en un archivo que proporciona.

La sintaxis básica de awk comando

En su forma más simple, el awk El comando va seguido de un conjunto de comillas simples y un conjunto de llaves, y el nombre del archivo en el que desea buscar se menciona en último lugar.

Se parece a esto:

awk '{action}' your_file_name.txt

Cuando desee buscar texto que tenga un patrón específico o busque una palabra específica en el texto, el comando se vería así:

awk '/regex pattern/{action}' your_file_name.txt

Cómo crear un archivo de muestra

Para crear un archivo en la línea de comando, usa el touch dominio.
Por ejemplo:touch filename.txt donde filename , es el nombre de su archivo.

A continuación, puede utilizar el open comando (open filename.txt ), y se abrirá un programa de procesador de texto como TextEdit donde puede agregar el contenido del archivo.

Entonces, supongamos que tiene un archivo de texto, information.txt , que contiene datos separados en diferentes columnas.

El contenido del archivo podría verse así:

fristName       lastName        age     city       ID

Thomas          Shelby          30      Rio        400
Omega           Night           45      Ontario    600
Wood            Tinker          54      Lisbon     N/A
Giorgos         Georgiou        35      London     300
Timmy           Turner          32      Berlin     N/A

En mi ejemplo, hay una columna para firstName , lastName , age , city y ID .

En cualquier momento, puede ver la salida del contenido de su archivo escribiendo cat text_file , donde text_file es el nombre de su archivo.

Cómo imprimir todo el contenido del archivo usando awk

Para imprimir todo el contenido de un archivo, la acción que especifica dentro de las llaves es print $0 .

Esto funcionará exactamente de la misma manera que el cat comando mencionado anteriormente.

awk '{print $0}' information.txt

Salida:

fristName       lastName        age     city       ID

Thomas          Shelby          30      Rio        400
Omega           Night           45      Ontario    600
Wood            Tinker          54      Lisbon     N/A
Giorgos         Georgiou        35      London     300
Timmy           Turner          32      Berlin     N/A

Si desea que cada línea tenga un número de línea, debe usar el NR variable incorporada:

awk '{print NR,$0}' information.txt 
1 fristName     lastName        age     city       ID
2 
3 Thomas        Shelby          30      Rio        400
4 Omega         Night           45      Ontario    600
5 Wood          Tinker          54      Lisbon     N/A
6 Giorgos       Georgiou        35      London     300
7 Timmy         Turner          32      Berlin     N/A

Cómo imprimir columnas específicas usando awk

Al usar awk , puede especificar ciertas columnas que desea imprimir.

Para imprimir la primera columna, utilice el comando:

awk '{print $1}' information.txt

Salida:

Thomas
Omega
Wood
Giorgos
Timmy

El $1 representa el primer campo, en este caso la primera columna.

Para imprimir la segunda columna, usaría $2 :

awk '{print $2}' information.txt

Salida:

lastName

Shelby
Night
Tinker
Georgiou
Turner

La forma awk determina dónde comienza y termina cada columna con un espacio, de forma predeterminada.

Para imprimir más de una columna, por ejemplo, la primera y la cuarta columna, haría lo siguiente:

awk '{print $1, $4}' information.txt

Salida:

fristName city
 
Thomas    Rio
Omega     Ontario
Wood      Lisbon
Giorgos   London
Timmy     Berlin

El $1 representa el primer campo de entrada (primera columna) y el $4 representa el cuarto. Los separas con una coma, $1,$4 , por lo que la salida tiene un espacio y es más legible.

Para imprimir el último campo (la última columna), también puede usar $NF que representa el último campo en un registro:

awk '{print $NF}' information.txt 

Salida:

ID

400
600
N/A
300
N/A

Cómo imprimir líneas específicas de una columna

También puede especificar la línea que desea imprimir de su columna elegida:

awk '{print $1}' information.txt | head -1 

Salida:

FirstName

Analicemos ese comando. awk '{print $1}' information.txt imprime la primera columna. Luego, la salida de ese comando (que viste anteriormente) es canalizada , utilizando el símbolo de tubería | , al comando principal, donde es -1 argumento selecciona la primera línea de la columna.

Si quisiera imprimir dos líneas, haría:

awk '{print $1}' information.txt | head -2 

Salida:

FirstName
Dionysia

Cómo imprimir líneas con un patrón específico en awk

Puede imprimir una línea que empieza con una letra específica.

Por ejemplo:

awk '/^O/' information.txt

Salida:

Omega           Night           45      Ontario    600

Ese comando selecciona cualquier línea con texto que empieza con una O .

Usas el símbolo de la flecha hacia arriba (^ ) primero, que indica el comienzo de una línea, y luego la letra con la que desea que comience una línea.

También puede imprimir una línea que termina en un patrón específico:

awk '/0$/' information.txt 

Salida:

Thomas          Shelby          30      Rio        400
Omega           Night           45      Ontario    600
Giorgos         Georgiou        35      London     300

Esto imprime las líneas que terminan en un 0 – el $ El símbolo se usa después de un carácter para indicar cómo terminará una línea.

Ese comando también podría cambiarse a:

awk '! /0$/' information.txt 

El ! se usa como NOT , por lo que en este caso selecciona las líneas que NO terminan en un 0 .

fristName       lastName        age     city       ID

Wood            Tinker          54      Lisbon     N/A
Timmy           Turner          32      Berlin     N/A

Cómo usar expresiones regulares en awk

Para generar palabras que contengan ciertas letras e imprimir palabras que coincidan con un patrón que especifique, vuelva a utilizar las barras inclinadas, // , mostrado anteriormente.

Si desea buscar palabras que contengan on , harías:

awk ' /io/{print $0}' information.txt 

Salida:

Thomas          Shelby          30      Rio        400
Omega           Night           45      Ontario    600
Giorgos         Georgiou        35      London     300

Esto coincide con todas las entradas que contienen io .

Digamos que tiene una columna adicional:un department columna:

fristName       lastName        age     city       ID   department

Thomas          Shelby          30      Rio        400  IT
Omega           Night           45      Ontario    600  Design
Wood            Tinker          54      Lisbon     N/A  IT
Giorgos         Georgiou        35      London     300  Data
Timmy           Turner          32      Berlin     N/A  Engineering

Para encontrar toda la información de las personas que trabajan en IT , deberá especificar la cadena que está buscando entre las barras, // :

awk '/IT/' information.txt 

Salida:

Thomas          Shelby          30      Rio        400  IT
Wood            Tinker          54      Lisbon     N/A  IT

¿Qué pasaría si quisiera ver solo el nombre y apellido de las personas que trabajan en IT? ?

Puede especificar la columna así:

awk '/IT/{print $1, $2}' information.txt 

Salida:

Thomas Shelby
Wood   Tinker

Esto solo mostrará la primera y la segunda columna donde IT aparece, en lugar de presentar todos los campos.

Al buscar palabras con un patrón específico, puede haber ocasiones en las que necesite usar un carácter de escape, como este:

awk '/N\/A$/' information.txt 

Salida:

Wood            Tinker          54      Lisbon     N/A
Timmy           Turner          32      Berlin     N/A

Quería encontrar líneas que terminaran con el patrón N/A .

Entonces, al buscar entre ' // ' como se muestra hasta ahora, tuve que usar un carácter de escape (\ ) entre N/A , de lo contrario habría recibido un error.

Cómo usar operadores de comparación en awk

Si, por ejemplo, quisiera encontrar toda la información de los empleados menores de 40 , usaría el < operador de comparación así:

awk '$3 <  40 { print $0 }' information.txt

Salida:

Thomas          Shelby          30      Rio        400
Giorgos         Georgiou        35      London     300
Timmy           Turner          32      Berlin     N/A

La salida muestra solo la información de personas menores de 40 años.

Conclusión

¡Y ahí lo tienes! Ahora conoce los conceptos básicos absolutos para comenzar a trabajar con awk y manipular datos de texto.

Para obtener más información sobre Linux, freeCodeCamp tiene una amplia variedad de materiales de aprendizaje disponibles.

Aquí hay un par de ellos para que comiences:

  • Conceptos básicos de Linux - Taller práctico
  • Linux para hackers éticos (tutorial de Kali Linux)
  • Manual de comandos de Linux

Gracias por leer y feliz aprendizaje 😊


Linux
  1. Comando Cat de Linux:uso y ejemplos

  2. El comando Sed de Linux:uso y ejemplos

  3. Comandos de Linux:descripción general y ejemplos

  4. Uso del comando de búsqueda de Linux:uso con ejemplos

  5. 10 ejemplos de comandos Xargs en Linux / UNIX

Comando awk de Linux con 10 ejemplos

Opciones de comando y ejemplos de Tee Command en Linux

50 comandos de corte de Linux simples y útiles en Unix con ejemplos

Los 50 Ejemplos Prácticos del Comando SED en Linux

Ejemplos esenciales del comando ps en Linux

Comando AWK en Linux/Unix