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
Parsing necesita ayuda en un archivo CSV y generar un nuevo archivo de salida VKR Programación de scripts de shell y 15 08-01-2008 08:33 AM
Encontrar Más antiguos y en movimiento por Parsing Archivo / Clasificación de Información Fecha de Nombres de archivo nikosey Programación de scripts de shell y 6 07-30-2008 10:46 PM
Analizar un archivo aol12123 Programación de scripts de shell y 11 03-25-2008 02:06 AM
Parsear un archivo CSV chiru_h Programación de scripts de shell y 6 02-12-2008 09:33 AM
Analizar un archivo de registro tbirenzweig Programación de scripts de shell y 4 06-20-2006 08:02 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 10-13-2008
brawnr brawnr is offline
Usuario Registrado
  
 

Fecha: octubre 2008
Publicaciones: 2
Archivo Parsing Ayuda

Hola,

Tengo un archivo que contiene los grupos de campos. Estos grupos están separados por una línea en blanco, para formar un registro lógico.

Cada línea consta de un campo de valor par.

Si quieres encontrar todos los registros de campo, donde "d" tiene un valor de'4 'y si lo hace, quiero que el valor del campo "a" (del mismo registro).

He aquí un ejemplo archivo de entrada:
Cita:
a 1
b 2
c 3
d 4
a 2
b 1
d 6

b 3
un 6
c 2

c 2
d 4
un 9

c 3
d 4
a 3

d 4
un 6
Quiero terminar con un archivo que contiene:
Cita:
1
6
Importar cosas NORE sobre el archivo de entrada son: a) el número de registros es variable, b) no todos los registros que contengan una 'd' sobre el terreno, c) no todos los registros que contengan una "a" sobre el terreno, e) los campos pueden estar en cualquier orden dentro un registro.

Creo que la respuesta será usar AWK pero tengo muy poco conocimiento de AWK y que sólo se utiliza para cosas muy básicas.

El sistema operativo es Sun 5-8 por el camino.

Ayudar serán bienvenidos.

Gracias.

  #2 (Enlace permanente)  
Old 10-13-2008
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programador, autor
  
 

Fecha: marzo 2007
Ubicación: Toronto, Canadá
Puestos: 2.365

Sobre la base de las aportaciones que ha facilitado, la salida debe ser:


Código:
1
9
3
6

Esta secuencia de comandos que le dará:


Código:
awk '
/a/ { a = $2 }
/d/ { d = $2 }
/^$/ && d == 4 && a > 0 {
   print a 
   a = -1
   d = -1
}
END {
   if ( d == 4 && a > 0 ) print a
}
' "$FILE"

  #3 (Enlace permanente)  
Old 10-13-2008
trébol shamrock is offline Forum Advisor  
Usuario Registrado
  
 

Fecha: octubre 2007
Ubicación: EE.UU.
Puestos: 753
Claro

Parece ser una gran brecha entre sus necesidades y la salida que usted espera. Dependiendo de lo que han declarado la salida debe ser parecida a cfajohnson la awk script correcto ...?
  #4 (Enlace permanente)  
Old 10-13-2008
brawnr brawnr is offline
Usuario Registrado
  
 

Fecha: octubre 2008
Publicaciones: 2
Lo sentimos, son correctos, la salida debe tener el siguiente texto:


Código:
 
1
9
3
6

Muchas gracias por su ayuda cfajohnson.
  #5 (Enlace permanente)  
Old 10-13-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
adicto
  
 

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

Código:
perl -00 -ne'print $1,"\n"if/d 4/&&/a (.)/' filename

AWK y otro enfoque:


Código:
awk '/d 4/ && /a / {
  for (i=1; i<=NF; i++)
    if ($i == "a") print $(i+1)
	}' RS= filename


Última edición por radoulov; al 10-13-2008 04:03 PM.. Motivo: refactored
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 03:33 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