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.