![]() |
Hola y bienvenida de los Estados Unidos a la UNIX y Linux Foros! Gracias por su visita y formar parte de nuestra comunidad global.
|
|
google unix.com
|
|||||||
| Foros | Registro | Reglas de los Foros | Enlaces | Álbumes | Preguntas más frecuentes | Lista de miembros | Calendario | Búsqueda | Puestos de hoy | Marcar Foros Como Leídos |
| 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 |
![]() |
|
|
Linkback vínculo | Herramientas de hilo | Buscar en este Hilo | Tasa de Hilo | Modos de visualización |
|
|
|
||||
|
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:
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
....
Cita:
|
|
||||
|
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
Recuerdos |
|
||||
|
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. |
|
||||
|
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 |
|
||||
|
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
|
![]() |
| Marcadores |
| Etiquetas |
| bash, grep, sed |
| Herramientas de hilo | Buscar en este Hilo |
| Modos de visualización | Vota a este hilo |
|
|