8 Manipulación de Datos
Esta guía cubre los comandos esenciales para la manipulación de datos de texto en archivos, incluyendo la búsqueda, ordenación y almacenamiento de los resultados de los comandos. Estas herramientas son inestimables para el análisis de datos y la creación de scripts en entornos tipo Unix.
8.1 Búsqueda Básica de Texto
El comando grep
es una herramienta versátil para buscar texto dentro de ficheros:
Búsqueda básica: Encuentra líneas que contengan una palabra específica en un fichero.
grep "mypalabra" file.txt
Insensible a mayúsculas: Ignora la distinción entre mayúsculas y minúsculas.
grep -i "mypalabra" file.txt
Números de línea: Muestra los números de línea de las líneas coincidentes.
grep -n "mypalabra" file.txt
Búsqueda inversa: Muestra las líneas que no contienen la palabra especificada.
grep -v "mypalabra" file.txt
Búsqueda recursiva: Buscar dentro de un directorio y en todos sus subdirectorios.
grep -r "mypalabra" ./mydirectory/
8.2 Expresiones Regulares
Las expresiones regulares mejoran la capacidad de búsqueda de grep. Utilice la opción
-E` para ampliar el soporte de expresiones regulares:
.
: Coincide con cualquier carácter.^
: Coincide con el inicio de una línea.$
: Coincide con el final de la línea.[ ]
: Coincide con cualquier carácter dentro de los corchetes.?
: El elemento precedente es opcional.*
: El elemento precedente puede aparecer cero o más veces.+
: El elemento precedente debe aparecer una o más veces.|
: Operador lógico OR entre expresiones.
Ejemplo: Buscar varias palabras.
grep -E 'palabra1|palabra2|palabra3' myfile.txt
8.3 Ordenación de Líneas de Archivo
Orden ascendente: Ordenación por defecto.
sort myfile.txt
Orden descendente: Invierte el orden de clasificación.
sort -r myfile.txt
Orden aleatorio: Barajar líneas.
sort -R myfile.txt
Ordenación numérica: Trata las comparaciones como numéricas.
sort -n myfile.txt
Guardar salida: Usar
-o
para guardar el resultado ordenado en un fichero.sort -o sorted_file.txt myfile.txt
8.4 Contar elementos de texto
Conteo Básico: Muestra el conteo de líneas, palabras y bytes.
wc myfile.txt
Sólo líneas: Cuenta el número de líneas.
wc -l myfile.txt
Sólo palabras: Cuenta el número de palabras.
wc -w myfile.txt
Sólo bytes: Cuenta el número de bytes.
wc -c myfile.txt
Sólo Caracteres: Cuenta el número de caracteres.
wc -m myfile.txt
8.5 Eliminar duplicados con uniq
Uso básico: Filtra las líneas duplicadas adyacentes.
uniq myfile.txt
Guardar salida: Redirige la salida a un nuevo fichero.
uniq myfile.txt > result.txt
Contar Ocurrencias: Prefijar líneas por su número de ocurrencias.
uniq -c myfile.txt
Mostrar sólo duplicados: Mostrar sólo las líneas repetidas.
uniq -d myfile.txt
8.6 Extraer columnas con cut
Para ficheros con columnas delimitadas, cut
permite extraer campos específicos:
- Especificar Delimitador: Usar
-d
para definir el delimitador de la columna. - Seleccionar columnas:
-f
selecciona las columnas a extraer.
Ejemplos:
# Extraer columnas de 1 a 3
cut -d ',' -f 1-3 myfile.txt
# Extraer a partir de la columna 3
cut -d ',' -f 3- myfile.txt
8.7 Redirección y Tuberías
Salida estándar a fichero (
>
): Crea o sobrescribe un fichero con la salida del comando.grep "mypalabra" myfile.txt > result.txt
Añadir a fichero (
>>
): Añadir la salida del comando al final de un fichero existente.grep "mypalabra" myfile.txt >> result.txt
Error estándar a fichero (
2>
): Redirige los mensajes de error a un fichero.grep "mypalabra" myfile.txt 2> error.log
Combinar salida y errores (
2>&1
): Dirigir tanto la salida estándar como los errores a un archivo de salida
el mismo archivo. bash grep "mypalabra" myfile.txt > result.txt 2>&1
Tuberías (
|
): Utiliza la salida de un comando como entrada de otro.grep "mypalabra" myfile.txt | sort
8.8 Visualización del contenido del archivo
Para mostrar el contenido de un fichero directamente en el terminal:
cat myfile.txt
Este comando imprime todo el contenido de myfile.txt
en la pantalla.
8.9 Entrada de terminal interactiva
Para la entrada interactiva, especialmente útil para comandos como sort
, puede utilizar la sintaxis de este documento:
sort -n << END
Tras ejecutar este comando, puede escribir las palabras o líneas que desee ordenar. Cada línea que introduzca será considerada para la ordenación. Una vez que haya terminado, escriba END
para indicar la finalización de la entrada y realizar la operación de ordenación.
8.10 Conclusión
Estos comandos constituyen la base del tratamiento de textos y la manipulación de datos en sistemas de tipo Unix, ya que permiten analizar y transformar datos de forma eficaz.