• Publicidad

Buscar dos cadenas al mismo tiempo en un texto plano

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

Buscar dos cadenas al mismo tiempo en un texto plano

Notapor animal collective » 2012-01-03 16:02 @710

Estimados,

Esperando que disfruten mucho este año nuevo, les quiero realizar la siguiente consulta:

Necesito buscar dos cadenas en un texto plano: “CRITICAL” y “DOWN”.

Para esto estoy usando los comandos:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. perl -ne 'print if /CRITICAL/' texto.txt
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. perl -ne 'print if /DOWN/' texto.txt
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Quiero saber si es posible ejecutar esa misma sentencia en una sola línea, ejecutar un comando que me permita buscar dos cadenas en un texto plano.

Desde ya agradezco su respuesta.
Feliz año nuevo

Saludos
animal collective
Perlero nuevo
Perlero nuevo
 
Mensajes: 39
Registrado: 2010-10-17 17:53 @786
Ubicación: Chile

Publicidad

Re: Buscar dos cadenas al mismo tiempo en un texto plano

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

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. perl -ne 'print if /CRITICAL/ or /DOWN/' texto.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

Re: Buscar dos cadenas al mismo tiempo en un texto plano

Notapor animal collective » 2012-01-03 16:51 @744

Gracias, el comando funciona perfecto, pero se me presento otro problema:

Mi código es el siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #! /usr/bin/perl
  2. #02-01-2012
  3. #LOG ALERTAS
  4. use strict;
  5. system('perl -ne 'print if /CRITICAL/ or /DOWN/' /root/LOG_alertas > alert');
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Al parecer tengo un error de sintaxis ya que al ejecutar el script me arroja el siguiente error:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
String found where operator expected at ./crea_log line 5, near "/DOWN/' /root/LOG_NAGIOS1 > LOG_NAGIOS'"
        (Missing operator before ' /root/LOG_NAGIOS1 > LOG_NAGIOS'?)
syntax error at ./crea_log line 5, near "'perl -ne 'print"
Execution of ./crea_log aborted due to compilation errors.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
animal collective
Perlero nuevo
Perlero nuevo
 
Mensajes: 39
Registrado: 2010-10-17 17:53 @786
Ubicación: Chile

Re: Buscar dos cadenas al mismo tiempo en un texto plano

Notapor explorer » 2012-01-03 17:16 @761

¿¿¿Ejecutar un perl dentro de otro perl??? ¡¡¡Qué feo!!!

Es mejor que hagas la operación de: abrir fichero origen en lectura, abrir el fichero destino en escritura, hacer un bucle por las líneas, y las que cumplan con la condición, sacarlas hacia el fichero destino. Cierras los ficheros, y listo.

O si no... no usar Perl:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. #!/bin/bash
  2. #02-01-2012
  3. #LOG ALERTAS
  4. perl -ne 'print if /CRITICAL/ or /DOWN/' /root/LOG_alertas > alert
  5.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


También puedes usar grep() (no probado):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use autodie;
  3. open $in,  '<', '/root/LOG_alertas';
  4. open $out, '>', 'alert';
  5. print $out grep { /CRITICAL/ or /DOWN/ } <$in>;
  6. close $out;
  7. close $in;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y de más formas... pero no, por favor, perl dentro de perl :(
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: Buscar dos cadenas al mismo tiempo en un texto plano

Notapor animal collective » 2012-01-10 14:37 @650

Muchas gracias, lo primero funcionó perfecto.
animal collective
Perlero nuevo
Perlero nuevo
 
Mensajes: 39
Registrado: 2010-10-17 17:53 @786
Ubicación: Chile


Volver a Básico

¿Quién está conectado?

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