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
Mensaje de obtener el archivo dentro de un rango de fechas ambharish UNIX for Dummies Preguntas y Respuestas 2 06-29-2007 06:20 PM
Informe basado en la extracción de archivos en un rango de fechas ganapati Programación de scripts de shell y 2 07-13-2006 12:26 PM
Archivo de registro la fecha definida por el usuario para comparar gama mojo24 Programación de scripts de shell y 0 05-05-2006 07:39 AM
de cómo extraer una serie de líneas de un archivo beilstwh Programación de scripts de shell y 5 07-09-2004 09:20 AM
Necesidad de imprimir los nombres de los archivos en un determinado rango de fechas utilizando LS Shamwari UNIX for Dummies Preguntas y Respuestas 2 10-08-2001 08:14 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 07-30-2008
Sharmila_P Sharmila_P is offline
Usuario Registrado
  
 

Fecha: julio 2008
Puestos: 19
recuperar las líneas de archivo que corresponden a la fecha determinada gama


Hola,

Tengo que recuperar las líneas que entran en el rango de fechas dadas.
por ejemplo: En un archivo de registro, tengo las líneas que tendrá la fecha y hora.
la entrada será una fecha range.eg: a partir de la fecha: 03/Jan/2008, hasta la fecha: i 24/Jul/2008.so ahora desea recuperar las líneas
que tienen la marca de hora entre estos 2 fecha determinada gama.

archivo de registro:
-----------
[02/Jan/2008 :19:37:00-20401-59-2] Proceso - los datos
[22/Jan/2008 :19:37:00-20401-59-2] Proceso - los datos
[22/Mar/2008 :19:37:00-20401-63-2] Proceso - los datos
[01/Jul/2008 :19:37:00-20401-63-2] Proceso - los datos
[22/Jul/2008 :19:37:00-20401-63-2] Proceso - los datos
[25/Jul/2008 :19:37:00-20401-63-2] Proceso - los datos

resultado:
Líneas 2,3,4 y 5 han de ser recuperados. las fechas están dentro del rango de fechas de entrada.
  #2 (Enlace permanente)  
Old 07-30-2008
aigles's Avatar
Aigles aigles is offline Forum Advisor  
Usuario Registrado
  
 

Fecha: abril 2004
Ubicación: Burdeos, Francia
Mensajes: 1.429
Una posible solución con awk :
Código:
awk -v From="03/Jan/2008" -v To="24/Jul/2008" '
function cnvDate(date   ,d) {
   split(tolower(date), d, "/");
   return sprintf("%04.4d%02.2d%02.2d", d[3], month[d[2]], d[1]);
}
BEGIN {
   FS = "[:[]";
   month["jan"]=1 ; month["feb"]=2 ; month["mar"]=3 ; month["apr"]=4 ;
   month["may"]=5 ; month["jun"]=6 ; month["jul"]=7 ; month["aug"]=8 ;
   month["sep"]=9 ; month["oct"]=10; month["nov"]=11; month["dec"]=12;
   date_from = cnvDate(From);
   date_to   = cnvDate(To);
}
{
   date = cnvDate($2)
   if (date >= date_from && date <= date_to)
      print;
}
' inputfile

Jean-Pierre
  #3 (Enlace permanente)  
Old 07-30-2008
Sharmila_P Sharmila_P is offline
Usuario Registrado
  
 

Fecha: julio 2008
Puestos: 19
Estoy recibiendo el mensaje de error cuando ejecuta este.
awk: error de sintaxis cerca de la línea 1
awk: rescate cerca de la línea 1

Como soy nuevo en awk, PLS ¿podría explicar qué es exactamente lo que su doing.and Quiero redirigir los resultados a un archivo nuevo.
  #4 (Enlace permanente)  
Old 07-30-2008
aigles's Avatar
Aigles aigles is offline Forum Advisor  
Usuario Registrado
  
 

Fecha: abril 2004
Ubicación: Burdeos, Francia
Mensajes: 1.429
Pruebe con nawk o gawk en lugar de awk.


Código:
awk -v From="03/Jan/2008" -v To="24/Jul/2008"

Y define las variables de: Para que contengan fechas de inicio y final.


Código:
function cnvDate(date   ,d) {
   split(tolower(date), d, "/");
   return sprintf("%04.4d%02.2d%02.2d", d[3], month[d[2]], d[1]);
}

Esta función coverts una fecha de 'dd / mmm / aaaa "a" aaaammdd ".


Código:
BEGIN {
   FS = "[:[]";
   month["jan"]=1 ; month["feb"]=2 ; month["mar"]=3 ; month["apr"]=4 ;
   month["may"]=5 ; month["jun"]=6 ; month["jul"]=7 ; month["aug"]=8 ;
   month["sep"]=9 ; month["oct"]=10; month["nov"]=11; month["dec"]=12;
   date_from = cnvDate(From);
   date_to   = cnvDate(To);
}

Initalizations:
- Entrada de separador de campo ':' o '['
- Meses tabla utilizada por la función cnvDate
- Fechas de inicio y finalización formato aaaammdd


Código:
{
   date = cnvDate($2)
   if (date >= date_from && date <= date_to)
      print;
}

Para cada línea de entrada:
- Convertir a formato aaaammdd fecha
- Imprimir línea si entre la fecha de inicio y fecha de finalización


Jean-Pierre.
  #5 (Enlace permanente)  
Old 07-31-2008
Sharmila_P Sharmila_P is offline
Usuario Registrado
  
 

Fecha: julio 2008
Puestos: 19
Para la misma consulta, si el archivo de entrada es como este (abajo), he intentado conseguir las líneas usando el separador de campo (FS) como espacio en blanco.
He utilizado el código como este ..
BEGIN (
FS \u003d "[]";
Pero no puedo especificar working.How que tiene que tener el 7 º campo con el único delimitador space.or hay ninguna otra manera.
Archivo de entrada:
-----------
2008-01-02 16:21:35,182 INFO1 loginslogging - mk99263 02/Jan/2008 16:21 2008-01-22 16:21:35,182 INFO2 loginslogging - mk99263 22/Jan/2008 16:21 2008-03-22 16 : 21:35,182 INFO3 loginslogging - mk99263 22/Mar/2008 16:21 2008-07-01 16:21:35,182 INFO4 loginslogging - mk99263 01/Jul/2008 16:21 2008-07-22 16:21:35,182 INFO5 loginslogging - mk99263 22/Jul/2008 16:21
2008-07-25 16:21:35,182 INFO6 loginslogging - mk99263 25/Jul/2008 16:21
  #6 (Enlace permanente)  
Old 07-31-2008
aigles's Avatar
Aigles aigles is offline Forum Advisor  
Usuario Registrado
  
 

Fecha: abril 2004
Ubicación: Burdeos, Francia
Mensajes: 1.429
Separador de campo \u003d espacio (o pestaña)
Fecha de campo \u003d $ 7

Código:
awk -v From="03/Jan/2008" -v To="24/Jul/2008" '
function cnvDate(date   ,d) {
   split(tolower(date), d, "/");
   return sprintf("%04.4d%02.2d%02.2d", d[3], month[d[2]], d[1]);
}
BEGIN {
   month["jan"]=1 ; month["feb"]=2 ; month["mar"]=3 ; month["apr"]=4 ;
   month["may"]=5 ; month["jun"]=6 ; month["jul"]=7 ; month["aug"]=8 ;
   month["sep"]=9 ; month["oct"]=10; month["nov"]=11; month["dec"]=12;
   date_from = cnvDate(From);
   date_to   = cnvDate(To);
}
{
   date = cnvDate($7)
   if (date >= date_from && date <= date_to)
      print;
}
' inputfile

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 12:55 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