Dom Jun 01, 2008 12:44 am
|
 |
amalia
Perlero Nuevo

|
Registrado: 01 Jun 2008
Mensajes: 5
|
|
| Unir dos archivos |
|
|
Hola a todos. Mi problema es el siguiente , ojalá me puedan ayudar:
Tengo dos archivos .dat que cada uno contienen una fila de datos y quisiera unir esas dos filas de datos en un solo archivo .dat por ejemplo:
| Código: |
---archivo1.dat------ archivo2.dat------------------- archivo3.dat
-------23 ---------------- 13------------------------- 23----13
-------36 ---------------- 16------------------------- 36----16
-------13 ---------------- 44------------------------- 13----44
-------16 ---------------- 23--------------------------16--- 23
-------26 ---------------- 19--------------------------26----19
-------43 ---------------- 26------------------------- 43----26
-------32 -----------------32------------------------- 32--- 32
-------14 -----------------17------------------------- 14----17
-------22 ---------------- 25------------------------- 22----25 |
Si alguien me puede ayudar con este script en Perl se los agradecería mucho.
Gracias  |
|
|
|

Dom Jun 01, 2008 12:24 pm
|
 |
amalia
Perlero Nuevo

|
Registrado: 01 Jun 2008
Mensajes: 5
|
|
|
|
|
Hola explorer, gracias por la bienvenida y muchas gracias por responderme tan prontamente, tu respuesta me ayudó bastante.
 |
|

Dom Jun 01, 2008 4:22 pm
|
 |
amalia
Perlero Nuevo

|
Registrado: 01 Jun 2008
Mensajes: 5
|
|
| Operaciones con datos |
|
|
Hola, me surgió un nuevo problema al hacer operatorias con los datos que se juntaron a partir de dos archivos .dat.
Mi problema es el siguiente:
Como dije anteriormente yo tengo dos archivos .dat que fueron unidos en un solo archivo .dat con el siguiente comando:
| Código: |
paste archivo1.dat archivo2.dat > archivo3.dat
---archivo1.dat------ archivo2.dat------------------- archivo3.dat
-------23 ---------------- 13------------------------- 23----13
-------36 ---------------- 16------------------------- 36----16
-------13 ---------------- 44------------------------- 13----44
-------16 ---------------- 23--------------------------16--- 23
-------26 ---------------- 19--------------------------26----19
-------43 ---------------- 26------------------------- 43----26
-------32 -----------------32------------------------- 32--- 32
-------14 -----------------17------------------------- 14----17
-------22 ---------------- 25------------------------- 22----25 |
Mi problema surgió cuando quise sumar la columna[0] con la columna[1], por ejemplo
| Código: |
--columna[0]---columna[1]--- columna[2]
------23------+---- 13-------------36
----- 36------+-----16-------------52
------13------+---- 44------------ 57 |
pero solo reconoce la columna [0]; si alguien me puede ayudar en este problema, se lo agradecería mucho. |
|

Dom Jun 01, 2008 4:36 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4222
Ubicación: Valladolid, España
|
|
|
|
|
Estaría bien ver el código que estás usando...
En cuanto a tu problema, tienes que leer cada línea del fichero, separar las columnas, hacer la suma y escribir la nueva línea. |
|

Dom Jun 01, 2008 6:09 pm
|
 |
amalia
Perlero Nuevo

|
Registrado: 01 Jun 2008
Mensajes: 5
|
|
|
|
|
Hola el programa que estoy usando es:
| Perl: | #!/usr/bin/perl
open (UNO, "<archivo1.dat");
open (DOS, "<archivo2.dat");
system"(paste archivo1.dat archivo2.dat > archivo3.dat)";
close(UNO );
close(DOS );
open(TRES, "<archivo3.dat");
open (OUT, ">archivo4.dat");
while($lineas= <TRES>)
{
chop($lineas);
@datos= $lineas;
$suma= $datos[0]+ $datos[1];
print OUT " $datos[0] $datos[1] $suma\n";
print "$suma\n";
} |
los valores dentro del archivo3.dat se ven así:
| Código: |
49 50 49 50
-4.1 -8.7
-4.2 -9.3
-4.4 -9.8
-4.5 -10.3
-4.7 -10
-4.9 -9.7
-5.1 -9.3
-5.1 -8.2
-5 -7.2
-4.8 -6.1
-4.4 -4.9
-4 -3.8
-3.1 -2.5
-1.7 -1
-0.3 0.5
0.1 1.4
-0.4 1.8
-0.8 2.3
-0.9 2.9
-1 3.5
-1 4.1 |
Si me pudieran ayudar, se los agradecería. |
|

Lun Jun 02, 2008 12:22 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4222
Ubicación: Valladolid, España
|
|
|
|
|
El error está en la línea
No haces la división entre columnas. Debes usar split():
| Perl: | @datos = split(" ", $lineas); |
|
|
Lun Jun 02, 2008 10:56 am
|
 |
amalia
Perlero Nuevo

|
Registrado: 01 Jun 2008
Mensajes: 5
|
|
|
|
|
| Hola explorer, muchas gracias por la ayuda, estoy muy agradecida. |
|
Lun Jun 02, 2008 12:00 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4222
Ubicación: Valladolid, España
|
|
|
|
|
De hecho, se puede reducir algo:
| Perl: | #!/usr/bin/perl
open(UNO, "<archivo1.dat"); # Abrir...
open(DOS, "<archivo2.dat");
open(OUT, ">archivo4.dat");
while( $uno = <UNO> ) { # Leemos del primer fichero
$dos = <DOS>; # Leemos del segundo
chomp($uno, $dos); # ¡Chopped!
# Salida
print OUT "$uno $dos ", $uno + $dos, "\n";
}
close(UNO ); # Cerrar...
close(DOS );
close(OUT ); |
|
|
Powered by phpBB © 2001, 2005 phpBB Group
|