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.txtInsensible a mayúsculas: Ignora la distinción entre mayúsculas y minúsculas.
grep -i "mypalabra" file.txtNúmeros de línea: Muestra los números de línea de las líneas coincidentes.
grep -n "mypalabra" file.txtBúsqueda inversa: Muestra las líneas que no contienen la palabra especificada.
grep -v "mypalabra" file.txtBú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.txt8.3 Ordenación de Líneas de Archivo
Orden ascendente: Ordenación por defecto.
sort myfile.txtOrden descendente: Invierte el orden de clasificación.
sort -r myfile.txtOrden aleatorio: Barajar líneas.
sort -R myfile.txtOrdenación numérica: Trata las comparaciones como numéricas.
sort -n myfile.txtGuardar salida: Usar
-opara 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.txtSólo líneas: Cuenta el número de líneas.
wc -l myfile.txtSólo palabras: Cuenta el número de palabras.
wc -w myfile.txtSólo bytes: Cuenta el número de bytes.
wc -c myfile.txtSó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.txtGuardar salida: Redirige la salida a un nuevo fichero.
uniq myfile.txt > result.txtContar Ocurrencias: Prefijar líneas por su número de ocurrencias.
uniq -c myfile.txtMostrar 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
-dpara definir el delimitador de la columna. - Seleccionar columnas:
-fselecciona 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.txt8.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.txtAñadir a fichero (
>>): Añadir la salida del comando al final de un fichero existente.grep "mypalabra" myfile.txt >> result.txtError estándar a fichero (
2>): Redirige los mensajes de error a un fichero.grep "mypalabra" myfile.txt 2> error.logCombinar 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.txtEste 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 << ENDTras 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.