Herramientas en linux

Una instalación estándar del sistema operativo Linux cuenta con un amplio numero de herramientas que nos pueden facilitar muchas tareas como:

  • visualisar un fichero
  • buscar un patrón en un fichero de texto
  • procesar un fichero tabular (la información se encuentra en diferentes columnas)
  • sustituir ciertas palabras por otras
  • buscar ficheros que cumplen ciertas características

Estas herramientas son especialmente importantes cuando trabajamos con ficheros muy grandes – demasiado grandes para abrirlos en un editor de texto (o hoja de cálculo).

Además, la interfaz entre el usuario y el SO (la shell) cuenta con su propio leguaje de programación que nos puede facilitar muchas tareas.

Procesar un fichero grande

Tenemos el siguiente fichero: /opt/datos/sequences.csv que contiene las anotaciones de todos los genomas secuenciados del virus SARS-Cov-2.

  • Visualizar el contenido
less /opt/datos/sequences.csv

more /opt/datos/sequences.csv
  • Ver el tamaño de los ficheros
cd /opt/datos
du -h *
  • Contar el número de lineas
wc -l /opt/datos/sequences.csv
  • Buscar lineas que contienen palabras claves

grep –help

grep ‘Spain’ /opt/datos/sequences.csv

  • ¿Cuantas lineas existen que contienen ‘Spain’?

Solución: Unir dos comandos, grep y wc usando Pipes

grep 'Spain' /opt/datos/sequences.csv | wc -l

La herramienta wc acepta entrada por STDIN que proporciona grep.

  • Redirigir la salida a un fichero de texto
grep 'Spain' /opt/datos/sequences.csv > /home/usuario/sars_cov_spain.txt
  • Trabajar con ficheros comprimidos
gunzip -c /opt/datos/sequences_comp.csv.gz | grep 'Spain' | wc -l

gunzip -c descomprime un fichero ‘sobre la marcha’ y escribe el resultado por STDOUT (la pantalla). ¡No descomprime el fichero generando uno nuevo!

 

Extraer diferentes columnas de un fichero

cut --help
cut -f 1,2 -d , /opt/datos/sequences.csv

con -f podemos indicar las columnas y con -d tenemos que especificar el carácter usado para separar las columnas (suele ser o el tabulador o la coma)

Problema: hay columnas que contienen comas internas (por ejemplo la columna que lista los autores separados por comas). Estas columnas están ‘encomilladas’ pero la herramienta cut ignora esta información.

Solución: Preguntar a ChatGPT

csvtool col 1,2,19,20,21,22,23 <(gunzip -c sequences_comp.csv.gz)
Preguntas:
  • ¿Cuantas entradas (genomas secuenciados) hay por pais?
  • Generar un fichero con el conteo por pais ordenado.
  • ¿Cuantas entradas hay por estado en USA?
  • ¿Cuantas entradas hay por año?

 

Ejercicios:

Tenemos el fichero /opt/datos/consensus.txt

Reportar:

  • Tamaño y número de lineas del fichero
  • Número de microRNAs diferentes (primera columna)
  • Número de genes diferentes (entradas que empiezan con ENSG en la segunda columna)
  • Extraer todas las lineas de los microRNAs
    • iri-miR-34-5p
    • iri-miR-2b-3p
    • iri-miR-bantam-5p
    • iri-miR-10a-5p
    • iri-miR-279a-5p
  • ¿Cuantas líneas hay con un valor >= 3 en la tercera columna?