• Publicidad

Función grep

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

Notapor STM » 2008-07-02 09:48 @450

Muchas Gracias.
Muy amable, al fin entiendo.
Ahora podré adicionar e implementar más funciones.
Hasta Luego.
STM
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2008-07-01 07:12 @342

Publicidad

Notapor STM » 2008-07-02 10:57 @498

Buenas Tardes.

He estado trabajando en el código pero resulta que le añadí más líneas al archivo fuente BRA.txt y ahora solo filtra las primeras líneas pero después deja pasar todo; en el archivo de salida uno obtiene una copia exacta del archivo de entrada; yo creo que es porque aparece el símbolo "#" y espacios en blanco al principio de algunas de las líneas del archivo de entrada.

¿Es que debo trabajar con if anidados?

Porque pareciera que él hace un buen filtraje hasta la parte donde encuentra un símbolo raro (algo diferente a una letra).

Muchas gracias.
STM
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2008-07-01 07:12 @342

Notapor explorer » 2008-07-02 16:11 @716

El programa está perfecto para el caso de que el fichero de entrada conste de líneas con 6 o más campos de texto separados con espacios en blanco.

Si las líneas del fichero no siguen esa sencilla regla, entonces, split, falla.

Si cambias las condiciones del juego, debes cambiar las reglas del juego. O no hay juego.
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

Notapor explorer » 2008-07-02 16:33 @731

STM escribiste:yo creo que es porque aparece el símbolo "#" y espacios en blanco al principio de algunas de las líneas del archivo de entrada.

Si quieres filtrar esas líneas, puedes colocar
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
next if /^#/;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
después del while.
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

Seleccion

Notapor STM » 2008-07-03 09:55 @455

Hola, Buen día.

He visto que existen expresiones que detectan un carácter y lo eliminan, pero ¿si lo que se necesita es eliminar todas las palabras que contengan ese carácter? porque yo intenté esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
s/ lenght/ /g;
next if /^#/;
next if /^$/;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
pero estas expresiones sirven para comparar una palabra dada, no un carácter.

Pero yo lo que deseo es detectar el carácter "<" y eliminar toda la línea.

Muchas gracias de antemano.
Hasta Luego
STM
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2008-07-01 07:12 @342

Notapor explorer » 2008-07-03 10:08 @464

De las 3 líneas que has puesto, la primera sirve para hacer una sustitución, de ' length' a ' ', a lo largo de toda (/g) la línea.

Y las otras dos, saltan al siguiente ciclo si la línea comienza (^) por '#' o '$'.

No están comparando palabras. Están comparando patrones. Un patrón puede ser una palabra o un carácter.

En el caso que planteas, si lo que quieres es filtrar toda la línea si contiene el carácter '<', pues entonces:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
next if /</;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
(saltamos al siguiente si la línea contiene al menos un '<')
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

Anterior

Volver a Básico

¿Quién está conectado?

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