Guía de Filtros de Texto en Linux: sort, cut, grep, awk y sed con Ejemplos
Linux tiene diversas herramientas para trabajar y transformar archivos de texto. Estas herramientas se llaman filtros de texto y son útiles para trabajar con scripts, verificando archivos de log, etc.
Comando cat
Uso:
$ cat [opciones] archivo
Cuando las opciones aparecen entre llaves, son opcionales.
El comando cat concatena archivos, imprime su contenido en pantalla y además puede recibir texto escrito desde el teclado hacia un archivo.
Veamos cómo crear un archivo con solo algunas líneas de texto:
$ cat > teste.txt
Ahora puede escribir cualquier texto. Cuando termine, presione Ctrl d en una línea vacía para finalizar la entrada de datos y guardar el archivo teste.txt.
Para ver el contenido del archivo recién creado:
$ cat teste.txt
El cat también puede servir para concatenar archivos.
$ cat texto1.txt > texto.txt
Observe que en este ejemplo el contenido del archivo texto.txt es reemplazado por texto1.txt.
Para agregar el contenido de texto1.txt al final del archivo texto.txt, lo correcto sería:
$ cat texto1.txt >> texto.txt
Comando cut
Uso:
$ cut opciones archivo
El comando cut traducido al pie de la letra significa cortar. Lee el contenido de uno o más archivos y tiene como salida una columna vertical.
Sus opciones más frecuentes son:
- -b número: Imprime una lista vertical con el byte número (de izquierda a derecha);
- -c número: Imprime una lista vertical con el carácter número (de izquierda a derecha);
- -d delimitador: Configura el delimitador que separa una columna de la otra. El valor predeterminado es Tab;
- -f número: Imprime la columna número.
Ejemplos:
$ cut –d : -f 1 /etc/passwd
$ cut –b 1 /etc/passwd
$ cat /etc/hosts | cut –f 2
Comando expand
Uso:
$ expand [opciones] archivo
El comando expand reemplaza el Tab (tabulación) dentro de los textos por el número de espacios correspondientes. Es útil para hacer que un texto que usa tabulaciones sea más atractivo para ciertos dispositivos, como video, impresora, archivos, etc.
Las opciones frecuentemente utilizadas son:
- -t número: Especifica el número de espacios que contiene el tab. El valor predeterminado es 8;
- -i: Convierte solo al inicio de las líneas.
Ejemplo:
$ expand LEIAME.TXT
Comando unexpand
Uso:
$ unexpand [opciones] archivo
El comando unexpand reemplaza el espacio simple por TAB (tabulación) dentro de los textos, al inicio de las líneas. Es lo inverso del comando expand.
Las opciones frecuentemente utilizadas son:
- -t número: Especifica el número de espacios que contiene el tab. El valor predeterminado es 8;
- -a: Convierte todos los espacios en lugar de solo los espacios al inicio de las líneas.
Ejemplo:
$ unexpand LEIAME.TXT
Comando fmt
Uso:
$ fmt [opciones]
El comando fmt (format) formatea un texto con un ancho específico. Puede eliminar espacios o agregar espacios según el ancho deseado. El valor predeterminado es 75 caracteres.
La opción frecuentemente utilizada es:
- -w número: Configura el ancho deseado para el texto.
Ejemplo:
$ fmt –w 50 LEIAME.TXT
Comando head
Uso:
$ head [opciones]
El comando head (cabecera) muestra las primeras 10 líneas del inicio del texto.
La opción frecuentemente utilizada es:
- -n número: Configura el número de líneas que head mostrará.
Ejemplo:
$ head –n 50 LEIAME.TXT
Comando join
Uso:
$ join [opciones] archivo1 archivo2
El comando join (unir) une las líneas de ambos los archivos que tengan un índice común. El comando join podrá ser utilizado como una base de datos simple.
Las opciones frecuentemente utilizadas son:
- -j1 número: Elige el campo número como índice para el archivo1.
- -j2 número: Elige el campo número como índice para el archivo2.
- -j número: Elige el campo número como índice para ambos los archivos.
Ejemplo:
Suponga que el archivo1 contenga el siguiente contenido:
1 GZH-1234
2 HYD-2389
3 GIS-2348
Y el archivo2 tenga el siguiente contenido:
1 Fiat Uno Mille Smart
2 Audi A3
3 Monza
Después del comando:
$ join –j 1 archivo1 archivo2
La salida será la siguiente:
1 GZH-134 Fiat Uni Mille Smart
2 HYD-2389 Audi A3
3 GIS-2348 Monza
TABLA 5 - Símbolos para diferenciar cabecera y pie de página
| Símbolo | Descripción |
| \:\:\: | Símbolo utilizado para iniciar la cabecera del texto |
| \:\: | Símbolo utilizado para iniciar el cuerpo del texto |
| \: | Símbolo utilizado para iniciar el pie de página del texto |
Observe que el comando join necesita que ambos los archivos contengan un índice, como en el ejemplo.
Comando nl
Uso:
$ nl [opciones] [archivo]
El comando nl (numerar líneas) se utiliza para numerar las líneas de un archivo. El comando considera condiciones especiales para la cabecera y el pie de página del archivo.
Las opciones frecuentemente utilizadas son:
- -h subopción: Utilizada para formatear la cabecera del texto. El padrão es no numerar la cabecera;
- -b subopción: Utilizada para formatear el cuerpo del texto. El padrão es numerar solamente las líneas no vacías;
- -f subopción: Utilizada para formatear el pie de página del texto. El padrão es no numerar el pie de página.
Las subopciones son:
- A: Numerar todas las líneas;
- t: Numerar solamente las llenas;
- n: No numerar las líneas.
Ejemplo:
Suponga que el archivo.txt tenga el siguiente contenido:
\:\:\:
Relatório de Notas e Frequência dos alunos de Engenharia de Software
—————————————————————————————————
Nome Nota Freq. Resultado
—————————————————————————————————
\:\:
Carlos Torres 8,5 80% Aprovado
José Antônio 10,0 100% Aprovado
Maria de Lourdes 10,0 100% Aprovado
Mário Cabral 9,5 100% Aprovado
\:
—————————————————————————————————
Y usemos el comando nl:
$ nl archivo.txt
El resultado será:
Relatório de Notas e Frequência dos alunos de Engenharia de Software
—————————————————————————————————
Nome Nota Freq. Resultado
—————————————————————————————————
1 Carlos Torres 8,5 80% Aprovado
2 José Antônio 10,0 100% Aprovado
3 Maria de Lourdes 10,0 100% Aprovado
4 Mário Cabral 9,5 100% Aprovado
—————————————————————————————————
Comando od
Uso:
$ od [opções] [arquivo]
El comando od (Octal y Otros formatos) se utiliza para visualizar el contenido de un archivo en los formatos hexadecimal, octal, ASCII y nombre de los caracteres.
La opción frecuentemente utilizada es:
- -t tipo: Especifica el tipo de salida que el comando od debe generar.
Los tipos posibles son:
- a: Nombre del carácter;
- c: ASCII;
- o: Octal;
- x: Hexadecimal.
Ejemplo:
$ cat > arquivo.txt
Certificação Linux
Ctrl d
$ od –t x arquivo.txt
0000000 74726543 63696669 6fe3e761 6e694c20
0000020 00007875
0000022
Comando paste
Uso:
$ paste [opciones] archivo1 archivo2
El comando paste (pegar) se utiliza para concatenar las líneas de varios archivos en columnas verticales.
Las opciones frecuentemente utilizadas son:
- -d's': Separa las columnas con el símbolo s dentro de las comillas simples;
- -s: concatena todo el contenido de un archivo con una línea para cada archivo.
Ejemplo:
Supongamos que el archivo1 tenga el siguiente contenido:
lmmoraes
rrodrigues
aduarte
Y el archivo2 tenga el siguiente contenido:
provedor.com.br
provedor2.com.br
provedor3.com.br
Al utilizar el comando paste, el resultado será el siguiente:
$ paste –d'@' archivo1 archivo2
Comando pr
Uso:
$ pr [opciones] archivo
El comando pr (printing) formatea un archivo de texto para una salida paginada con encabezado, márgenes y ancho definidos. Es útil para formatear textos crudos para impresión. El encabezado consiste en fecha, hora, nombre del archivo y número de página.
Las opciones frecuentemente utilizadas son:
- -d: Especifica espaciado doble;
- -l número: Especifica el número de caracteres de ancho de la página. El padrão son 66 caracteres;
- -o número: Especifica el número de espacios del margen izquierdo.
Ejemplo:
$ pr –l 75 –o 5 archivo.txt
Comando split
Uso:
$ split [opciones] archivo_entrada archivo_salida
El comando split (dividir) se usa para dividir grandes archivos en n-archivos menores. Los archivos de salida se generan de acuerdo con el número de líneas del archivo de entrada.
El padrão es dividir el archivo cada 1000 líneas. Los nombres de los archivos de salida siguen el patrón archivosaidaaa archivosaidaab archivosaidaac, así sucesivamente.
La opción más frecuente es:
- -n: Donde n es el número de líneas que dividirán el archivo de entrada.
Ejemplo:
$ split -20 archivo1.txt archivosaida.txt
Comando tail
Uso:
$ tail [opciones] archivo
El comando tail (cola) visualiza las últimas 10 líneas de un archivo. Funciona como lo opuesto del comando head.
Las opciones más frecuentes son:
- -n número: Especifica el número de líneas finales que tail mostrará de un archivo;
- -f: Muestra las últimas líneas finales de un archivo continuamente mientras otro proceso graba más líneas. Muy útil para visualizar archivos de LOG.
Ejemplo:
$ tail –n 50 /var/log/messages
$ tail –f /var/log/messagens
Comando tr
Uso:
$ tr [opciones] variable_busca variable_cambio
El comando tr realiza el intercambio de una variable por otra especificada. Este comando no trabaja directamente con archivos, por lo tanto debe ser utilizado con la salida estándar de otro comando.
Las opciones más frecuentes son:
- -d: Elimina las ocurrencias de la variable de búsqueda;
- -s: Suprime las ocurrencias repetidas de la variable de búsqueda.
Ejemplo:
$ cat archivo1 | tr a-z A-Z
En este ejemplo el comando tr intercambia todas las letras de a a z por mayúsculas.
$ cat archivo1 | tr –d a
En este ejemplo el comando tr elimina la letra a.
$ cat archivo1 | tr –s 1
En este ejemplo el comando tr suprime las ocurrencias repetidas del número 1.
El comando tr puede realizar el intercambio de caracteres de la variable de búsqueda por la variable de intercambio, pero el número de caracteres debe ser el mismo en ambas.
Comando wc
Uso:
$ wc [opciones] [archivos]
El comando wc cuenta las líneas, palabras y caracteres de uno o más archivos. Si se pasa más de un archivo como argumento, mostrará las estadísticas de cada archivo y también el total.
Las opciones más frecuentes son:
- -c: Cuenta el número de caracteres de uno o más archivos;
- -l: Cuenta el número de líneas de uno o más archivos;
- -L: Cuenta el número de caracteres de la línea más larga del archivo;
- -w: Cuenta las palabras de uno o más archivos.
Ejemplo:
$ wc LEIAME.TXT
Comando sort
Uso:
$ sort [-b] [-d] [-f] [-i] [-m] [-M] [-n] [-r] [-u] archivo [-o archivo_salida]
El comando sort ordena las líneas de un archivo de texto.
Sus opciones son:
- -b: Ignora espacios al inicio de la línea;
- -d: Ordena las líneas alfabéticamente e ignora la puntuación;
- -f: Ignora la diferencia entre mayúsculas y minúsculas;
- -I: Ignora caracteres de control;
- -m: Combina dos o más archivos en un archivo ordenado de salida;
- -M: Toma las tres primeras letras de las líneas como mes (ej: ENE);
- -n: Ordena por los números al inicio de las líneas;
- -r: Ordena en orden inverso;
- -u: Si la línea está duplicada, muestra solo la primera;
- -o: Envía la salida del comando al archivo.
Ej.:
$ sort archivo
Comando uniq
Uso:
$ uniq [Opciones]... [Archivo_Entrada [Archivo_Salida]]
El comando uniq elimina las líneas duplicadas de un archivo ordenado.
Las opciones más comunes son:
- -c: Indica al inicio de las líneas el número de ocurrencias;
- -d: Imprime solo las líneas duplicadas;
- -i: Ignora la diferencia entre mayúsculas y minúsculas;
- -u: Imprime solo las líneas únicas, que no tienen duplicados.
Comando sed
Uso:
$ sed [Opciones] {script} archivo
El comando sed es un poderoso editor de strings para filtrar o editar secuencias de texto.
Las opciones más comunes son:
- -e: Agrega un script a los comandos a ejecutar;
- -f archivo: Agrega el contenido de un archivo como script a ejecutar;
- -r: Usa expresiones regulares en el script.
Ejemplos:
Para sustituir expresiones por otras, utilizamos la "s", con los delimitadores "/", de manera que la primera ocurrencia es el texto a buscar, y la segunda el texto que será reemplazado. Observe que sed solo cambiará la primera ocurrencia de cada línea, y es sensible a mayúsculas y minúsculas. La salida estándar de sed será el terminal.
$ cat archivo
Hoy hará calor de noche. La Noche es bella.
$ sed s/noche/dia/ archivo
Hoy hará calor de dia. La Noche es bella.
Aprenda mucho más sobre Linux en nuestro curso en línea. Puede realizar la inscripción aquí. Si ya tiene una cuenta, o quiere crear una, simplemente ingrese o cree su usuario aquí.
¿Le gustó? Comparta
Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.