• Publicidad

Reemplazar desde consola

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

Reemplazar desde consola

Notapor teco000 » 2010-08-20 18:23 @807

Saludos, con una molestia. Tengo varios archivos en el cual la primera línea contiene la siguiente estructura:

letras (letras) letras;

Lo que necesito es saber cómo puedo reemplazar esta línea por la siguiente en todos los archivos:

(letras)

Pero desde la consola. :?
teco000
Perlero nuevo
Perlero nuevo
 
Mensajes: 67
Registrado: 2008-05-29 15:22 @682
Ubicación: Guatemala

Publicidad

Re: Reemplazar desde consola

Notapor explorer » 2010-08-20 18:32 @814

Puedes usar las facilidades de Perl de edición "in situ":

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl -p -i -e 's/ ^ .* ( \( .*? \) ) .* $ /$1/x if $. == 1' kk.txt
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Ten en cuenta que si estás en Windows, deberás cambiar el tipo de las comillas, de simples a dobles.

Si vas a procesar más de un fichero, necesitarás reiniciar el contador de líneas ($.) cada vez que termine de leerse un fichero:

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl -p -i -e 's/ ^ .* ( \( .*? \) ) .* $ /$1/x if $. == 1; close ARGV if eof' *.txt
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

(sacado de un ejemplo de eof() en perlfunc)
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: Reemplazar desde consola

Notapor teco000 » 2010-08-23 11:15 @511

Gracias por la ayuda, solo una consulta: ¿me puedes explicar que función tiene la letra x?.
teco000
Perlero nuevo
Perlero nuevo
 
Mensajes: 67
Registrado: 2008-05-29 15:22 @682
Ubicación: Guatemala

Re: Reemplazar desde consola

Notapor explorer » 2010-08-23 11:23 @516

La opción /x sirve para escribir la expresión regular de forma más clara, con espacios en blanco.

Sin ella, tendríamos que escribir esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl -p -i -e 's/^.*(\(.*?\)).*$/$1/ if $. == 1' kk.txt
Coloreado en 0.001 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


Volver a Básico

¿Quién está conectado?

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