El procesamiento de texto en Linux es una de esas habilidades que parecen pequeñas al principio, pero que terminan ahorrando muchísimo tiempo. Sirve para buscar información, leer logs, contar líneas, extraer columnas, limpiar archivos, transformar datos y automatizar tareas que serían lentas en una hoja de cálculo o en un editor gráfico.
La idea central es sencilla: Linux trata el texto como un flujo. Muchos comandos leen datos desde la entrada estándar, hacen una transformación concreta y escriben el resultado en la salida estándar. Gracias a las tuberías, puedes conectar herramientas pequeñas para resolver problemas reales con una sola línea de terminal.
En esta guía vas a ver los comandos más importantes para procesar texto en Linux, cuándo usar cada uno, ejemplos prácticos y errores frecuentes que conviene evitar.
👉 Y recuerda, si quieres aprender más de Linux, pincha en este curso de Linux gratis
👉 También te dejo por aquí una guía de comandos Linux por categorías
Qué es el procesamiento de texto en Linux
Procesamiento de texto en Linux significa tomar uno o varios archivos, o la salida de un comando, y aplicar una operación útil sobre ese contenido. Por ejemplo:
- Ver el contenido de un archivo.
- Buscar líneas que contienen una palabra o patrón.
- Contar líneas, palabras o caracteres.
- Extraer columnas de un archivo delimitado.
- Ordenar resultados.
- Eliminar duplicados.
- Reemplazar texto.
- Filtrar logs.
- Preparar datos para otro comando o script.
Linux funciona especialmente bien con texto plano: logs del sistema, archivos de configuración, listados, CSV sencillos, salidas de comandos y ficheros generados por scripts.
Un detalle importante: muchas herramientas de procesamiento de texto en Linux no modifican el archivo original. Normalmente leen datos y muestran el resultado por pantalla. Si quieres guardar esa salida, usas redirección.
Tabla resumen
| Comando | Cuándo usarlo |
|---|---|
| cat | Para mostrar archivos pequeños o concatenar varios archivos. |
| less | Para leer archivos grandes cómodamente, página por página. |
| head | Para inspeccionar las primeras líneas de un archivo. |
| tail | Para inspeccionar las últimas líneas de un archivo. |
| wc | Para contar líneas, palabras o caracteres. |
| grep | Para buscar texto y filtrar líneas que coincidan con un patrón. |
| cut | Para extraer campos simples cuando hay delimitadores claros. |
| sort | Para ordenar líneas de texto. |
| uniq | Para quitar o contar duplicados consecutivos, normalmente después de usar sort. |
| tr | Para transformar, reemplazar o eliminar caracteres. |
| sed | Para realizar reemplazos y ediciones de flujo sobre texto. |
| awk | Para procesar texto por columnas, aplicar condiciones y hacer cálculos. |
Entrada, salida, tuberías y redirección
Antes de entrar en comandos concretos, conviene entender cuatro conceptos básicos.
La entrada estándar es de donde un comando lee datos. Puede ser el teclado, un archivo o la salida de otro comando.
La salida estándar es donde un comando escribe el resultado. Normalmente es la pantalla.
Una tubería, escrita con |, conecta la salida de un comando con la entrada de otro:
cat archivo.txt | grep "error"En este ejemplo, cat muestra el archivo y grep filtra las líneas que contienen la palabra error.
La redirección permite guardar resultados en archivos:
grep "error" sistema.log > errores.txtEsto guarda las líneas encontradas en errores.txt. Si el archivo ya existía, se sobrescribe.
Para añadir contenido al final sin borrar lo anterior, usa >>:
grep "warning" sistema.log >> errores.txtEl error más común es confundir > con >>. El primer operador reemplaza el archivo completo; el segundo añade contenido al final.
Ver archivos con cat, less, head y tail
El primer paso en cualquier tarea de procesamiento de texto suele ser inspeccionar el contenido.
cat muestra un archivo completo:
cat notas.txtEs útil para archivos pequeños, pero puede ser incómodo con ficheros largos porque todo pasa rápidamente por la pantalla.
Para leer archivos grandes, suele ser mejor less:
less sistema.logDentro de less, puedes moverte con las flechas, buscar con /texto y salir con q.
Para ver solo el inicio de un archivo:
head archivo.txtPor defecto muestra las primeras 10 líneas. Puedes elegir otra cantidad:
head -n 20 archivo.txtPara ver el final:
tail archivo.txtY para seguir un archivo en tiempo real:
tail -f sistema.logEsto es muy útil con logs. Por ejemplo, para ver los errores que se van generando:
tail -f sistema.log | grep "ERROR"Consejo práctico: no necesitas usar cat para todo. Muchos comandos pueden leer el archivo directamente:
grep "ERROR" sistema.logEsto suele ser más claro que:
cat sistema.log | grep "ERROR"Contar líneas, palabras y caracteres con wc
wc significa word count, pero no solo cuenta palabras. También puede contar líneas, bytes y caracteres.
wc archivo.txtLa salida muestra líneas, palabras y bytes.
Para contar solo líneas:
wc -l archivo.txtPara contar palabras:
wc -w archivo.txtPara contar caracteres:
wc -m archivo.txtUn uso habitual en procesamiento de texto es combinar grep con wc:
grep "error" sistema.log | wc -lPrimero se filtran las líneas que contienen error y después se cuentan.
Buscar texto con grep
grep es una de las herramientas más usadas para procesar texto en Linux. Sirve para buscar líneas que coinciden con una palabra, cadena o patrón.
grep "procesamiento" archivo.txtPara ignorar mayúsculas y minúsculas:
grep -i "error" sistema.logPara mostrar el número de línea:
grep -n "error" sistema.logPara buscar de forma recursiva en una carpeta:
grep -R "TODO" proyecto/Para excluir líneas que contienen un patrón:
grep -v "debug" sistema.logEjemplo práctico: encontrar errores en el log del sistema, sin diferenciar entre error, Error o ERROR:
grep -i "error" /var/log/syslogSi quieres profundizar en esta herramienta, puedes ampliar con la guía sobre el comando grep en Linux.
Error frecuente: olvidar las comillas cuando el patrón contiene espacios:
grep "error de conexión" archivo.txtSin comillas, la shell interpreta cada palabra como un argumento separado.
Extraer columnas con cut
cut sirve para extraer partes de cada línea. Es muy útil cuando el texto tiene columnas separadas por un delimitador claro, como dos puntos, comas o tabuladores.
Imagina un archivo usuarios.txt con este contenido:
ana:admin:34
luis:editor:28
marta:viewer:41Para extraer la primera columna:
cut -d ':' -f 1 usuarios.txtResultado:
ana
luis
martaPara extraer la segunda columna:
cut -d ':' -f 2 usuarios.txtTambién puedes seleccionar varias columnas:
cut -d ':' -f 1,3 usuarios.txtcut funciona muy bien cuando el delimitador es estable. Si las columnas están separadas por espacios variables o el archivo tiene una estructura más compleja, awk suele ser una opción más flexible.
Ordenar y eliminar duplicados con sort y uniq
sort ordena líneas:
sort nombres.txtPara ordenar numéricamente:
sort -n numeros.txtPara ordenar en sentido inverso:
sort -r nombres.txtuniq elimina líneas repetidas consecutivas:
uniq nombres.txtAquí hay un detalle importante: uniq solo detecta duplicados si están juntos. Por eso se combina casi siempre con sort:
sort nombres.txt | uniqPara contar cuántas veces aparece cada línea:
sort nombres.txt | uniq -cY para ordenar ese conteo de mayor a menor:
sort nombres.txt | uniq -c | sort -nrEjemplo práctico: ver las direcciones IP más repetidas en un log, suponiendo que la IP está en la primera columna:
cut -d ' ' -f 1 access.log | sort | uniq -c | sort -nr | headError común: usar uniq directamente sobre un archivo sin ordenarlo antes y esperar que elimine todos los duplicados del documento.
Transformar caracteres con tr
tr traduce, elimina o comprime caracteres. Lee desde la entrada estándar, así que normalmente se usa con tuberías o redirecciones.
Convertir minúsculas a mayúsculas:
echo "linux" | tr 'a-z' 'A-Z'Convertir espacios en saltos de línea:
echo "uno dos tres" | tr ' ' '\n'Eliminar dígitos:
echo "abc123" | tr -d '0-9'Comprimir espacios repetidos:
echo "uno dos" | tr -s ' 'Ejemplo práctico: separar palabras, ordenarlas y contar repeticiones:
tr ' ' '\n' < texto.txt | sort | uniq -c | sort -nrError frecuente: intentar usar tr para reemplazar palabras completas. tr trabaja con caracteres, no con cadenas complejas. Para reemplazos de palabras, normalmente conviene usar sed.
Reemplazar texto con sed
sed es un editor orientado a flujos. Permite transformar líneas mientras pasan por el comando.
Reemplazar la primera aparición de una palabra en cada línea:
sed 's/viejo/nuevo/' archivo.txtReemplazar todas las apariciones:
sed 's/viejo/nuevo/g' archivo.txtMostrar solo un rango de líneas:
sed -n '10,20p' archivo.txtEliminar líneas vacías:
sed '/^$/d' archivo.txtEjemplo práctico: cambiar http:// por https:// en una lista de enlaces:
sed 's#http://#https://#g' enlaces.txtEn este caso se usa # como separador en lugar de / para que las barras de las URLs no dificulten la lectura.
Por defecto, sed no cambia el archivo original. Muestra el resultado transformado. Para guardar en otro archivo:
sed 's/viejo/nuevo/g' archivo.txt > archivo_nuevo.txtAlgunas versiones permiten editar el archivo directamente con -i:
sed -i 's/viejo/nuevo/g' archivo.txtPrecaución: antes de usar sed -i en archivos importantes, prueba el comando sin -i o crea una copia. Un reemplazo masivo mal planteado puede dejar un archivo difícil de recuperar.
Procesar columnas y reglas con awk
awk es una herramienta muy potente para trabajar con datos estructurados por columnas. Lee línea por línea y permite imprimir campos, aplicar condiciones y hacer cálculos.
Por defecto, awk separa los campos por espacios o tabulaciones.
Imprimir la primera columna:
awk '{print $1}' archivo.txtImprimir la primera y tercera columna:
awk '{print $1, $3}' archivo.txtFiltrar líneas donde la tercera columna sea mayor que 100:
awk '$3 > 100 {print $0}' datos.txtSumar valores de una columna:
awk '{suma += $2} END {print suma}' datos.txtCambiar el separador de campos:
awk -F ':' '{print $1}' /etc/passwdEjemplo práctico: mostrar usuario y shell en /etc/passwd:
awk -F ':' '{print $1, $7}' /etc/passwdawk suele ser mejor que cut cuando necesitas condiciones, cálculos, separadores más flexibles o procesamiento por columnas con reglas más completas.
Error frecuente: confundir $1 de awk con variables de la shell. Dentro de comillas simples, $1 pertenece a awk; fuera de ellas, la shell podría intentar expandirlo.
Ejemplos de procesamiento de texto en Linux
La verdadera potencia aparece al combinar comandos sencillos.
Contar errores en un log
grep -i "error" sistema.log | wc -lPrimero se buscan las líneas que contienen error; después se cuenta cuántas hay.
Ver los 10 términos más repetidos
tr ' ' '\n' < texto.txt | tr 'A-Z' 'a-z' | sort | uniq -c | sort -nr | headEste pipeline separa palabras, convierte todo a minúsculas, ordena, cuenta duplicados, ordena por frecuencia y muestra los primeros resultados.
Extraer usuarios únicos de un archivo
cut -d ':' -f 1 usuarios.txt | sort | uniqBuscar archivos que contienen una palabra
grep -R -l "procesamiento" documentos/La opción -l muestra solo los nombres de archivo donde hubo coincidencias.
Ver las líneas recientes que coinciden con un patrón
tail -n 200 sistema.log | grep "ERROR"Esto limita el análisis a las últimas 200 líneas del log.
Obtener las IP más frecuentes de un log web
awk '{print $1}' access.log | sort | uniq -c | sort -nr | headEs una forma rápida de detectar clientes muy repetidos, posibles bots o direcciones que generan mucho tráfico.
Redirección de errores
Además de la salida estándar, existe la salida de error estándar. Muchos comandos escriben errores por separado.
Guardar errores en un archivo:
comando 2> errores.txtGuardar salida normal y errores juntos:
comando > salida.txt 2>&1Descartar errores:
comando 2>/dev/nullEjemplo práctico:
grep -R "texto" /etc 2>/dev/nullAsí se evitan mensajes de permisos denegados mientras se buscan coincidencias.
Error común: no distinguir entre salida normal y salida de error. Si rediriges solo con >, los errores pueden seguir apareciendo en pantalla.
Conclusión
El procesamiento de texto en Linux se basa en combinar herramientas pequeñas que hacen una tarea concreta. Con comandos como grep, cut, sort, uniq, tr, sed y awk, puedes analizar logs, limpiar datos, extraer información y automatizar tareas repetitivas.
Para empezar, practica con archivos simples y construye pipelines poco a poco. Cuando una combinación funcione, puedes guardarla en un script y reutilizarla. Esa es una de las razones por las que Linux sigue siendo tan útil para administradores, desarrolladores y cualquier persona que trabaje con datos en texto plano.
