• Publicidad

Truncar registros de 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.

Truncar registros de un archivo

Notapor dandarc_perl » 2008-08-13 18:02 @793

Hola, soy nuevo en Perl.

Tengo un archivo con longitud de registro de 400 caracteres y quiero truncarlo a 200 caracteres, ¿Alguna idea de cómo hacerlo con Perl?.

Gracias de antemano.

Suerte.
dandarc_perl
Perlero nuevo
Perlero nuevo
 
Mensajes: 28
Registrado: 2008-08-13 17:55 @788

Publicidad

Notapor explorer » 2008-08-13 18:14 @801

Bienvenido a los foros de Perl en Español, dandarc_perl.

Debes usar la función truncate().

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
truncate "fichero.txt", 200;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Ya lo intenté y no funcionó

Notapor dandarc_perl » 2008-08-14 09:43 @447

Ya puse el truncate() y me borró los registros, este es mi código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#! /usr/local/bin/perl
open( ARCHTRUN, "+>/valida/cdrstemp/prueba");
truncate ARCHTRUN, 200;
close ARCHTRUN;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¿Alguna idea de por qué me está borrando los registros?
dandarc_perl
Perlero nuevo
Perlero nuevo
 
Mensajes: 28
Registrado: 2008-08-13 17:55 @788

Ya lo logré, pero no era lo que esperaba

Notapor dandarc_perl » 2008-08-14 10:19 @471

Ya logré truncar el archivo, pero yo creía que la función iba a truncar registro cada registro a 200 caracteres pero lo que hizo fue truncarme el archivo a 200 caracteres, jajaja, (creo que fui bastante ingenuo :oops: ), ahora tendré que barrer el archivo y truncar registro por registro.

Se aceptan sugerencias.

Gracias
dandarc_perl
Perlero nuevo
Perlero nuevo
 
Mensajes: 28
Registrado: 2008-08-13 17:55 @788

Notapor explorer » 2008-08-14 10:51 @494

Disculpas, entendí mal la pregunta. Creí que querías truncar todo el fichero, y en realidad solo quieres truncar los registros.

Ese truncamiento de registros lo puedes hacer con substr().
Última edición por explorer el 2008-11-28 11:26 @518, editado 1 vez en total
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor teco000 » 2008-08-14 11:06 @504

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

use warnings;
use strict;

open(A,"/prueba.txt")or die $!;
while ( my $linea = <A> ) {

    my $a= substr($linea,0,5);
    print"$a\n";

}

close A;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
teco000
Perlero nuevo
Perlero nuevo
 
Mensajes: 67
Registrado: 2008-05-29 15:22 @682
Ubicación: Guatemala

Notapor dandarc_perl » 2008-08-14 11:35 @524

Gracias explorer y tec000, ya me aparecen los registros truncados, pero ahora, cómo le hago para reemplazar los registros originales por los nuevos truncados, si se puede, y si no se puede, ¿cómo hago para pasar los registros a otro archivo nuevo?.

Gracias
dandarc_perl
Perlero nuevo
Perlero nuevo
 
Mensajes: 28
Registrado: 2008-08-13 17:55 @788

Notapor teco000 » 2008-08-14 12:02 @543

LO DE REEMPLAZAR NO TE ENTENDÍ, AQUÍ TE DEJO PARA COPIARLOS A OTRO ARCHIVO


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use warnings;
use strict;

open(A,"prueba.txt")or die $!;
while ( my $linea = <A> ) {
    open(B,">>pruebab.txt")or die $!;
    my $a= substr($linea,0,5);
    printf B "$a\n";
}

close A;
close B;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
teco000
Perlero nuevo
Perlero nuevo
 
Mensajes: 67
Registrado: 2008-05-29 15:22 @682
Ubicación: Guatemala

Notapor dandarc_perl » 2008-08-14 16:13 @717

Excelente teco000 muchas gracias.
dandarc_perl
Perlero nuevo
Perlero nuevo
 
Mensajes: 28
Registrado: 2008-08-13 17:55 @788


Volver a Básico

¿Quién está conectado?

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

cron