Operar con líneas de texto mediante el comando awk
El comando AWK también permite realizar diversas operaciones con líneas de texto.
Imprimir únicamente las líneas que sigan un determinado patrón
awk '/patrón/ {print}' archivo.txt
Este comando imprimirá todas las líneas del archivo «archivo.txt» que contengan el patrón especificado.
Mostrar únicamente las líneas que empiezan o finalizan por un determinado patrón
awk '/^patrón/ {print}' archivo.txt
awk '/patrón$/ {print}' archivo.txt
Estos comandos imprimirán únicamente las líneas del archivo «archivo.txt» que comienzan (^
) o terminan ($
) con el patrón especificado.
Mostrar las columnas que queramos de únicamente las líneas que cumplen una determinada condición
awk '/condición/ {print $2, $4}' archivo.txt
quí se imprimirán la segunda y cuarta columna de las líneas del archivo «archivo.txt» que cumplen la condición especificada.
Mostrar únicamente las líneas que tengan una longitud de caracteres determinada mediante lenght
awk 'length == 10 {print}' archivo.txt
En este ejemplo, se imprimirán únicamente las líneas del archivo «archivo.txt» que tengan una longitud de 10 caracteres utilizando la función length
.
Mostrar filas que deben cumplir con varias condiciones de forma simultanea con el operador &&
awk '/condición1/ && /condición2/ {print}' archivo.txt
Este comando imprimirá las líneas del archivo «archivo.txt» que cumplan simultáneamente con las dos condiciones especificadas.
Ver la longitud de cada una de las líneas con el comando awk mediante ‘{print length}’
awk '{print length}' archivo.txt
Aquí se imprimirá la longitud de cada línea del archivo «archivo.txt».
Imprimir la longitud de únicamente las líneas que tengan un determinado número de caracteres
awk 'length == 5 {print length}' archivo.txt
En este caso, se imprimirá la longitud de las líneas del archivo «archivo.txt» que tengan exactamente 5 caracteres.
Imprimir todas las líneas cuyo último delimitador sea igual a una determinada palabra mediante el condicional if
awk -F ':' '{if ($NF == "palabra") print}' archivo.txt
Aquí se establece el delimitador de campos como dos puntos (:
) y se imprimirán todas las líneas del archivo «archivo.txt» cuyo último delimitador sea igual a la palabra especificada.
Contar el número de líneas de un fichero o de la salida de un comando con NR (Número de registros)
awk 'END {print NR}' archivo.txt
Este comando contará el número total de líneas del archivo «archivo.txt» utilizando la variable NR
.
Imprimir la primera línea de un fichero o de la salida de un comando con la opción NR
awk 'NR == 1 {print}' archivo.txt
Aquí se imprimirá la primera línea del archivo «archivo.txt» utilizando la opción NR
de AWK.
Imprimir todas las filas de un fichero a partir de una determinada línea mediante la opción NR
awk 'NR >= 5 {print}' archivo.txt
Este comando imprimirá todas las líneas del archivo «archivo.txt» a partir de la quinta línea utilizando la opción NR
de AWK.
Imprimir todas las líneas de un documento o salida que empiezan con un determinado carácter o string
awk '/^patrón/ {print}' archivo.txt
Aquí se imprimirán todas las líneas del archivo «archivo.txt» que comienzan con el patrón especificado.
Imprimir eliminando los x primeros caracteres de cada línea mediante el parámetro substr
awk '{print substr($0, 3)}' archivo.txt
En este ejemplo, se imprimirán todas las líneas del archivo «archivo.txt», eliminando los primeros 3 caracteres de cada línea utilizando la función substr
.
Imprimir un rango de líneas determinadas mediante el comando awk y NR
awk 'NR >= 3 && NR <= 7 {print}' archivo.txt
Este comando imprimirá un rango de líneas del archivo «archivo.txt», desde la tercera hasta la séptima línea, utilizando la variable NR
y el operador &&
.
Saber en qué posición de una línea aparece una palabra o combinación de letras determinada mediante match y RSTART
awk 'match($0, /patrón/) {print RSTART}' archivo.txt
Aquí se imprimirá la posición en la que se encuentra el patrón especificado en cada línea del archivo «archivo.txt» utilizando la función match
y la variable RSTART
.
Mostrar la longitud de un patrón mediante el parámetro RLENGTH
awk 'match($0, /patrón/) {print RLENGTH}' archivo.txt
En este caso, se imprimirá la longitud del patrón encontrado en cada línea del archivo «archivo.txt» utilizando la variable RLENGTH.