The UNIX and Linux Forums  
Hola y bienvenida de los Estados Unidos a la UNIX y Linux Foros! Gracias por su visita y formar parte de nuestra comunidad global.

Go Back   El UNIX y Linux Foros > Arriba Foros > Programación de scripts de shell y
.
google unix.com



Programación de scripts de shell y Plantear preguntas sobre KSH, CSH, SH, BASH, PERL, PHP, SED, AWK y otros scripts de shell y lenguajes de script de shell aquí.

Más UNIX y Linux Foro Temas usted puede encontrar útiles
Hilo Hilo para principiantes Foro Respuestas Último mensaje
grep'ing un archivo hasta un cierto mensaje pallak7 Programación de scripts de shell y 3 04-23-2009 11:48 AM
grep'ing para directorios específicos, y utilizando la salida para mover archivos JayC89 Programación de scripts de shell y 1 12-06-2008 03:37 AM
La aceleración de un script de shell (find, grep y un bucle for) Dave Stockdale UNIX for Dummies Preguntas y Respuestas 8 08-11-2008 04:36 AM
Acelerar el procesamiento de un archivo dlam Programación de scripts de shell y 4 07-19-2008 12:47 PM
la aceleración de la compilación en Sun Solaris medio ambiente swamymns Programación de scripts de shell y 2 07-12-2006 12:06 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback vínculo Herramientas de hilo Buscar en este Hilo Tasa de Hilo Modos de visualización
  #1 (Enlace permanente)  
Old 04-21-2009
elinenbe elinenbe is offline
Usuario Registrado
  
 

Fecha: diciembre 2008
Puestos: 8
Question grep'ing y trozos sed'ing en bash ... Necesito ayuda sobre la aceleración de un analizador de registro.

Tengo un archivo que es de 20 - 80 + MB de tamaño que es un cierto tipo de archivo de registro.

Registra uno de nuestros procesos y este proceso es multi-hilos. Por lo tanto, el archivo de registro es un tipo de desorden. He aquí un ejemplo:

Parece que el logfile: "FECHA HORA - ID HILO - Detalles", y un nuevo archivo es creado por cada día
Cita:
20090409 000122 - BD0 - Decreto 123 período de sesiones a partir
20090409 000122 - BD0 - Procesamiento 1
20090409 000122 - BD0 - Más de Procesamiento
20090409 000123 - EF0 - Decreto 234 período de sesiones a partir
20090409 000124 - EF0 - Procesamiento
20090409 000124 - BD0 - Tratamiento 2
20090409 000125 - BD0 - Más de Procesamiento
20090409 000125 - EF0 - Procesamiento
20090409 000125 - DD1 - Cancelar 345 período de sesiones a partir
20090409 000125 - DD1 - Procesamiento
20090409 000126 - DD1 - Tratamiento 2
20090409 000126 - BD0 - Ordenar el cierre de 123
20090409 000127 - 11F - Consulta 543 período de sesiones a partir
20090409 000127 - 11F - Procesamiento
..
..
20090409 000135 - 11F - 543 Consulta cerrar
..
20090409 000140 - EF0 - Ordenar el cierre de 234
..
..
..
20090409 000143 - DD1 - Cancelar 345 apagar
Ahora, aquí es donde esto se convierte en un dolor ... Tengo que sacar las líneas de "Iniciando sesión" a "Poner fin a reunión" para cada hilo de identificación, y estos volcado a los archivos separados. Sin embargo, el hilo de identificación puede duplicarse en el curso de un día - pero que no por muchas horas.

Una sesión puede durar desde 30 segundos a 4 minutos o menos (~ 1200 líneas) en el 'log', y puede haber hasta 20 sesiones simultáneas.

Ahora, tengo algo que funciona - aunque muy lentamente. Me acaban grepping y sedding el archivo una y otra vez. Cuando el fichero es grande, se necesita una enorme cantidad de tiempo. Estoy aquí esperando que alguien me puede ayudar a optimizar esto. Si es posible, me gustaría usar bash.

Gracias,
Eric

Aquí está el código que tengo que funciona, pero es _slow_

Código:
    if [[ -e "$log_file" ]]
    then
        echo "parsing: "$log_file
        grep "starting session" $log_file | while read line 
        do
            thread=`echo $line | cut -d' ' -f4`
            sessiontype=`echo $line | cut -d' ' -f6`
            sessionnumber=`echo $line | cut -d' ' -f7`

            echo "  first line of session: "${line:0:25}"..."
            line2=`echo  - $thread - $sessiontype $sessionnumber shutting down`
            echo "  last line of session: "${line2:0:25}"..."
            sed -n "/$line/,/$line2/p" $log_file | grep " - $thread - ">session.$thread.$sessiontype.$sessionnumber
        done
    ....
Esto me da una serie de archivos, que con el ejemplo anterior de registro se creará, como se muestra a continuación:
Cita:
el archivo: session.BD0.Order.123
20090409 000122 - BD0 - Decreto 123 período de sesiones a partir
20090409 000122 - BD0 - Procesamiento 1
20090409 000122 - BD0 - Más de Procesamiento
20090409 000124 - BD0 - Tratamiento 2
20090409 000125 - BD0 - Más de Procesamiento
20090409 000126 - BD0 - Ordenar el cierre de 123

el archivo: session.DD1.Cancel.345
20090409 000125 - DD1 - Cancelar 345 período de sesiones a partir
20090409 000125 - DD1 - Procesamiento
20090409 000126 - DD1 - Tratamiento 2
..
..
..
20090409 000143 - DD1 - Cancelar 345 apagar

el archivo: session.11F.Query.543
20090409 000127 - 11F - Consulta 543 período de sesiones a partir
20090409 000127 - 11F - Procesamiento
..
..
20090409 000135 - 11F - 543 Consulta cerrar

el archivo: session.EF0.Order.234
20090409 000123 - EF0 - Decreto 234 período de sesiones a partir
20090409 000124 - EF0 - Procesamiento
20090409 000125 - EF0 - Procesamiento
20090409 000140 - EF0 - Ordenar el cierre de 234
  #2 (Enlace permanente)  
Old 04-21-2009
Franklin52 Franklin52 is online now Forum Staff  
Moderador
  
 

Fecha: febrero 2007
Mensajes: 4.305
Suponiendo que la primera línea de un período de sesiones termina con "iniciar sesión" se puede probar esto (no probado):

Código:
awk '{
  !a[$4]{a[$4]=$4; n[$4]="session."$4"."$6"."$7}
  a[$4]{print > n[$4]}
' file
Uso o nawk / usr/xpg4/bin/awk en Solaris si obtiene errores.

Recuerdos
  #3 (Enlace permanente)  
Old 04-21-2009
elinenbe elinenbe is offline
Usuario Registrado
  
 

Fecha: diciembre 2008
Puestos: 8
Lo siento, yo debería haber sido más específicos. El período de sesiones a partir todas las líneas terminan con algo como:

20090409 000122 - BD0 - Decreto 123 período de sesiones a partir del puerto 12 con el cliente 34
20090409 000123 - EF0 - Decreto 234 período de sesiones a partir del puerto 347 con el cliente 38
...

Y tanto el cliente y el puerto son dinámicos valores.

Sí, estoy recibiendo errores - Me estoy quedando esta bajo cygwin, así que no tienen fácil acceso a nawk.
  #4 (Enlace permanente)  
Old 04-21-2009
devtakh devtakh is offline
Usuario Registrado
  
 

Fecha: octubre 2007
Ubicación: Bangalore
Puestos: 514
probar esto --
$ Sort-k 4 'log' | awk 'NR \u003d\u003d 1 (anterior \u003d $ 4; txt \u003d "período de sesiones." $ 4 "." $ 6 "." $ 7; printf ( "% s \ n% s", txt, $ 0); getliine) (if (anterior! ~ $ 4) (txt \u003d "período de sesiones." $ 4 "." $ 6 "." $ 7; printf ( "% s \ n% s", txt, $ 0); ant \u003d $ 4) else (print $ 0; ant \u003d $ 4)) "

dará algo como esto --

session.11F.Processing.
20090409 000127 - 11F - Processing20090409 000127 - 11F - Procesamiento
20090409 000127 - 11F - Consulta 543 período de sesiones a partir
session.BD0.More.Processing
20090409 000122 - BD0 - Más Processing20090409 000125 - BD0 - Más de Procesamiento
20090409 000126 - BD0 - Ordenar el cierre de 123
20090409 000122 - BD0 - Decreto 123 período de sesiones a partir
20090409 000122 - BD0 - Procesamiento 1
20090409 000124 - BD0 - Tratamiento 2
session.DD1.Cancel.345
20090409 000125 - DD1 - Cancelar 345 a partir session20090409 000125 - DD1 - Procesamiento
20090409 000126 - DD1 - Tratamiento 2
session.EF0.Order.234
20090409 000123 - EF0 - Decreto 234 a partir session20090409 000124 - EF0 - Procesamiento
20090409 000125 - EF0 - Procesamiento


¡salud!,
Devaraj Takhellambam
  #5 (Enlace permanente)  
Old 04-21-2009
Franklin52 Franklin52 is online now Forum Staff  
Moderador
  
 

Fecha: febrero 2007
Mensajes: 4.305
Intente este:

Código:
awk '
{if !($4 in a){a[$4]=$4; n[$4]="session."$4"."$6"."$7}}
{if ($4 in a) {print > n[$4]}}
' file
Recuerdos
Closed Thread

Marcadores

Etiquetas
bash, grep, sed

Herramientas de hilo Buscar en este Hilo
Buscar en este Hilo:

Búsqueda avanzada
Modos de visualización Vota a este hilo
Vota a este hilo:

Normas de envío
puede que no nuevo puesto de hilos
puede que no enviar respuestas
puede que no enviar archivos adjuntos
puede que no editar sus puestos

Código BB es Encendido
Emoticones son Encendido
[IMG] código Encendido
Código HTML es Apagado
Trackbacks son Encendido
Pingbacks son Encendido
Refbacks son Encendido




Todas las horas son GMT -4. La hora es 04:32 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traducciones de idiomas Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Estudios
El UNIX y Linux Foros Contenido Copyright © 1993-2009. Todos los derechos Reserved.Ad Gestión por RedTyger

Las direcciones URL de contenido vBSEO 3.2.0