The UNIX and Linux Forums  

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
mostrar un cambio de variable en lugar de la pantalla en ksh raidzero Programación de scripts de shell y 7 09-25-2008 10:24 AM
vuelva a realizar. perfil después de cambiar la variable sboxtops AIX 2 09-02-2008 03:19 PM
script bash ejecución con una variable en una sola línea shoeb Programación de scripts de shell y 1 07-06-2008 05:14 AM
IFS cambiar el valor de la variable pvar Programación de scripts de shell y 1 02-25-2005 06:21 PM
Pregunta muy sencilla acerca de cómo cambiar la variable PS1 en el inicio! abidmalik UNIX for Dummies Preguntas y Respuestas 2 08-26-2002 02:05 AM

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 11-18-2008
sx3v1l_1n51de sx3v1l_1n51de is offline
Usuario Registrado
  
 

Fecha: enero 2005
Puestos: 27
Talking Ayuda con awk script, cambiando el FS para una única variable

Hola a todos, a los nuevos im awk y apreciar si usted me dijera cómo hacerlo, tengo un archivo con varias entradas como la siguiente:

Código:
2008-09-09 21:57:45   44  403 CUSTOM_EVENT                      Upgrade - end1
2008-09-09 21:57:46   45  403 CUSTOM_EVENT                      Component Check - start
2008-09-09 21:57:56   46  403 CUSTOM_EVENT                      Component Check - end
2008-09-09 21:57:56   47  403 CUSTOM_EVENT                      OSChecksum - start
2008-09-09 21:59:15   48  403 CUSTOM_EVENT                      OSChecksum - end
2008-09-09 21:59:15   49  403 CUSTOM_EVENT                      SELLogCheck - start
2008-09-09 22:01:39   50  403 CUSTOM_EVENT                      SELLogCheck - end
2008-09-09 22:01:40   51  403 CUSTOM_EVENT                      USB to Serial Connection Test - start
2008-09-09 22:43:46   52  403 CUSTOM_EVENT                      USB to Serial Connection Test - start
2008-09-09 22:44:15   53  403 CUSTOM_EVENT                      MemoryCheck - start
2008-09-09 22:44:16   54  403 CUSTOM_EVENT                      MemoryCheck - end
im tratando de obtener los valores en el último campo, que sería la descripción del evento (por ejemplo, USB a prueba de conexión en serie - inicio), pero tengo que seguir por separado la materia con un "-" para saber si la prueba se inició o terminado, el último campo es un poco variable por lo que me imaginé y podría utilizar algo como esto:

cat $ 1 | awk '(descripción \u003d $ 6 "" $ 7 "" $ 8 "" $ 9 "" $ 10 "" $ 11 "" $ 12 "" $ 13 "" $ 14 "" $ 15; imprimir descripción)'

primero i obtener todos los campos del 6 al 15, y luego, cambiando la i tryed a FS - y el segundo campo de impresión ...

cat $ 1 | awk '(descripción \u003d $ 6 "" $ 7 "" $ 8 "" $ 9 "" $ 10 "" $ 11 "" $ 12 "" $ 13 "" $ 14 "" $ 15; FS \u003d "-"; imprimir descripción $ 2)'

por supuesto, que imprime el segundo campo de toda la línea, que es el año ... Hehe ... ¿hay alguna manera de decirle a awk para la salida de la variable del segundo campo delimitado por un "-"?

agradece a todos
  #2 (Enlace permanente)  
Old 11-18-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
adicto
  
 

Fecha: enero 2007
Ubicación: Варна, България / Milán, Italia
Mensajes: 2.889
Con AWK:

Código:
awk '{
  for (i=6; i<=NF; i++) 
    s = s ? s FS $i : $i    
  split(s, t, "-")
  print "desc:", t[1], "state:", t[2]
  s = ""  
}' infile
Con Perl:

Código:
perl -lane'
  print "desc: @F[5..$#F-2] state: $F[-1]"
  ' infile
  #3 (Enlace permanente)  
Old 11-18-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
adicto
  
 

Fecha: enero 2007
Ubicación: Варна, България / Milán, Italia
Mensajes: 2.889
En realidad, no es necesario que partir explícitamente con awk:

Código:
awk '{
  for (i=6; i<=NF-2; i++) 
    s = s ? s FS $i : $i    
  print "desc:", s, "state:", $NF
  s = ""  
}' infile

Última edición por radoulov; al 11-18-2008 04:17 PM..
  #4 (Enlace permanente)  
Old 11-18-2008
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
modérateur
  
 

Fecha: diciembre 2007
Ubicación: Casa de 17-veces campeón mundial de Boston Celtics
Puestos: 1.311
Cool No está seguro de su resultado deseado, pero

He añadido un comentario para demostrar que los dos campos están separados, y añadió la "ed" al verbo de acción (sólo porque suena mejor así).

Código:
> cat file74
2008-09-09 21:57:45   44  403 CUSTOM_EVENT                      Upgrade - end1
2008-09-09 21:57:46   45  403 CUSTOM_EVENT                      Component Check - start
2008-09-09 21:57:56   46  403 CUSTOM_EVENT                      Component Check - end
2008-09-09 21:57:56   47  403 CUSTOM_EVENT                      OSChecksum - start
2008-09-09 21:59:15   48  403 CUSTOM_EVENT                      OSChecksum - end
2008-09-09 21:59:15   49  403 CUSTOM_EVENT                      SELLogCheck - start
2008-09-09 22:01:39   50  403 CUSTOM_EVENT                      SELLogCheck - end
2008-09-09 22:01:40   51  403 CUSTOM_EVENT                      USB to Serial Connection Test - start
2008-09-09 22:43:46   52  403 CUSTOM_EVENT                      USB to Serial Connection Test - start
2008-09-09 22:44:15   53  403 CUSTOM_EVENT                      MemoryCheck - start
2008-09-09 22:44:16   54  403 CUSTOM_EVENT                      MemoryCheck - end

> cut -c65- file74 | awk '{FS="-"}{print $1" _which was_ "$2"ed"}'
Upgrade _which was_ -ed
Component Check  _which was_  started
Component Check  _which was_  ended
OSChecksum  _which was_  started
OSChecksum  _which was_  ended
SELLogCheck  _which was_  started
SELLogCheck  _which was_  ended
USB to Serial Connection Test  _which was_  started
USB to Serial Connection Test  _which was_  started
MemoryCheck  _which was_  started
MemoryCheck  _which was_  ended
Closed Thread

Marcadores

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 01:10 PM.


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