• Publicidad

Modificar líneas en un archivo

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Modificar líneas en un archivo

Notapor Peich69 » 2013-12-06 14:55 @663

Hola.

Tengo un directorio que contiene varios archivos .fasta que corresponden a diferentes cepas. Lo que quiero es lanzar los archivos fasta de las cepas de una misma especie a un programa que calcula unas historias. Esto lo haré a través de un archivo .pl que contiene las instrucciones (configuración) del programa y las rutas de los fastas que quiero lanzar contra el programa. Lo lanzaré dentro de un script de Perl así: `./binario_del_programa ./archivo.pl`

El archivo.pl que usaré como argumento contiene unas líneas como estas:

$FILES{nombre_1}="/home/prueba/archivo_1.fasta";
$FILES{nombre_2}="/home/prueba/archivo_2.fasta";
$FILES{nombre_3}="/home/prueba/archivo_3.fasta";
$FILES{nombre_4}="/home/prueba/archivo_4.fasta";

donde localiza qué fastas exactamente he de lanzar. Lo que estoy intentando es automatizar el proceso. En vez de modificar manualmente estas líneas antes de lanzar el programa para cada especie, quiero crear un foreach dentro del script que para cada especie me modifique las líneas (colocando la ruta de las cepas de esa especie) y lance el programa. Cuando termine y cambie de especie, que vuelva a modificar las líneas con los fastas de las cepas de la nueva especie y lance el programa, etc...

Había pensado usar una expresión regular. Abrir el archivo .pl que usaré de argumento, leer cada línea con un while y cuando encuentre una línea que empiece por $FILES cambiarla por una de las líneas que corresponden a la especie que esté en el foreach.

El problema es que no tengo el mismo número de archivos para cada especie. La especie 1 tiene 5 cepas, por tanto habrá 5 líneas. La especie 2 tiene 9 cepas, por tanto necesitaré 9 líneas. Si uso la expresión regular solo podré modificar las líneas existentes, pero no podré añadir más.

¿Se os ocurre alguna manera de hacerlo?

Gracias.
Peich69
Perlero nuevo
Perlero nuevo
 
Mensajes: 18
Registrado: 2013-03-19 08:49 @409

Publicidad

Re: Modificar líneas en un archivo

Notapor explorer » 2013-12-06 15:32 @689

Hummm... ¿Y no es más sencillo modificar el primer programa? Si el binario_del_programa es capaz de entender un archivo Perl, es quizás porque esté escrito en Perl...

Otro caso: si archivo.pl solo contiene las líneas $FILE... entonces no necesitas expresiones regulares ni nada: sobre escribes el archivo.pl cada vez, y listo.

En otro caso, si archivo.pl contiene más cosas, una forma sencilla de hacerlo sería crear una plantilla así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
#!/usr/bin/perl
# PLANTILLA

# otras cosas...
#...

ARCHIVOS

# otras cosas que no sabemos
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Luego, en el programa que modifica archivo.pl, lees la plantilla, generas el código que necesitas, y con la expresión regular cambias 'ARCHIVOS' por el código generado; y el resultado final lo guardas como archivo.pl.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Modificar líneas en un archivo

Notapor Peich69 » 2013-12-07 05:40 @277

¡¡¡Muchas gracias, explorer!!!

El tema es que me han pasado el programa en binario expresamente para que no lo toque, pero sí que está escrito en Perl.
Probaré lo de la plantilla.

Un saludo y gracias de nuevo.
Peich69
Perlero nuevo
Perlero nuevo
 
Mensajes: 18
Registrado: 2013-03-19 08:49 @409


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados