• Publicidad

Modificar palabras en líneas de texto

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

Modificar palabras en líneas de texto

Notapor AdmChess » 2012-03-29 16:59 @749

Buenas tardes:

¿Cómo puedo modificar una palabra de una línea de texto?

Ejemplo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
FileSet:                "BerthaRamos" 2011-07-29 08:49:53
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Quiero que solo aparezca
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
FileSet:                BerthaRamos
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


¿Se puede hacer para varias líneas con diferentes nombres?

Gracias,

Saludos cordiales
AdmChess
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2012-03-22 13:31 @605

Publicidad

Re: Modificar palabras en líneas de texto

Notapor explorer » 2012-03-29 17:48 @783

Se puede hacer de muchas maneras. De hecho, Perl nació para resolver este tipo de cosas.

La forma más sencilla sería leer el fichero a memoria, repasar las líneas una a una, y cuando lleguemos a las interesantes, modificarlas. Finalmente, escribimos la nueva versión del fichero.

Otra forma más cómoda sería usando Tie::File (ejemplo).

Lo más normal es pensar en hacer un filtro: procesamos todos las líneas, y aquella que concuerde con nuestro patrón, queda modificada. Eso lo podemos hacer desde la misma línea de órdenes, con perl -p -i -e (ejemplo) (ejemplo).

Sería algo así (no probado):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. perl -p -i.bak -e 's/^(FileSet:\s+)"(.+?)".+/$1$2/;' archivo
Coloreado en 0.003 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: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Modificar palabras en líneas de texto

Notapor AdmChess » 2012-03-30 08:48 @408

Buenos días, explorer.

Muchas gracias por la información, solo que no logro quitar los paréntesis y su contenido.

JuanSantillan-fd (26Jan08)

Ya le agregué comillas, coma simple, y no me deja, ¿hay alguna manera de hacerlo?

Gracias, master.
AdmChess
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2012-03-22 13:31 @605

Re: Modificar palabras en líneas de texto

Notapor explorer » 2012-03-30 10:17 @470

!Ah! ¿pero había paréntesis? :wink:

Muéstranos tu código y te decimos dónde está el fallo.

Si se trata de localizar paréntesis, recuerda que en un patrón de expresiones regulares debes "escaparlos" con un '\' delante.
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 palabras en líneas de texto

Notapor AdmChess » 2012-03-30 11:06 @504

perl -p -i.bak -e 's{(26jan08)} {}g' log.txt
AdmChess
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2012-03-22 13:31 @605

Re: Modificar palabras en líneas de texto

Notapor explorer » 2012-03-30 11:13 @509

perl -p -i.bak -e 's{\(26jan08\)}{}g' log.txt
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 palabras en líneas de texto

Notapor AdmChess » 2012-03-30 11:31 @521

¿Qué tal, master?

Ya intenté pero sigue sin hacerlo.

Toda la línea es:
"JuanSantillan-fd" 2.2.8 (26Jan08) Linux,Cross-compile,Win32

Y solo quiero dejar:
JuanSantillan-fd

Saludos
AdmChess
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2012-03-22 13:31 @605

Re: Modificar palabras en líneas de texto

Notapor explorer » 2012-03-30 12:03 @544

Si solo quieres quedarte con la parte que está entre comillas dobles, lo tienes aún más sencillo:

s/^.*"(.+?)".*$/$1/;

perl -E '$x=qq("JuanSantillan-fd" 2.2.8 (26Jan08) Linux,Cross-compile,Win32); $x =~ s/^.*"(.+?)".*$/$1/; say $x'
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 palabras en líneas de texto

Notapor AdmChess » 2012-03-30 14:10 @632

¡¡Hola, explorer!!

Muchas gracias por todo tu apoyo, ¡¡quedó perfecto!!

Un último favor: cuando mando el correo al usuario le llega de esta forma:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Client:                 VictorRuiz-fd      
Start time:             26-Mar-2012 10:58:29
End time:               26-Mar-2012 11:34:55
Elapsed time:           36 mins 26 secs
FD Files Written:       8,167
FD Bytes Written:       20,946,297,560 (20.94 GB)
Termination:            Backup OK
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


El usuario tiene Thunderbird, de cliente.

Pero cuando mando el mail a usuarios que tienen Outlook Express y Microsoft Outlook, la segunda fila le llega

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Client:               VictorRuiz-fd      
Start time:             26-Mar-2012 10:58:29
End time:             26-Mar-2012 11:34:55
Elapsed time:       36 mins 26 secs
FD Files Written:      8,167
FD Bytes Written:    20,946,297,560 (20.94 GB)
Termination:       Backup OK
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


La instrucción para mandarlo es esta:

mail -s "test" [email protected] < victor.txt


¿¿Habrá alguna forma de corregir esto??


Saludos
AdmChess
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2012-03-22 13:31 @605

Re: Modificar palabras en líneas de texto

Notapor explorer » 2012-03-30 16:27 @727

Tienes que decirles que deben elegir:

O usan un programa de correo serio, como el Thunderbird,
o configuran su programa de correo para que la fuente de letras por defecto sea monoespaciada.
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


Volver a Básico

¿Quién está conectado?

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

cron