![]() |
|
|
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 |
| 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 |
![]() |
|
|
Linkback vínculo | Herramientas de hilo | Buscar en este Hilo | Tasa de Hilo | Modos de visualización |
|
|
|
||||
|
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. |
|
||||
|
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. |
|
|||||
|
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. |
|
||||
|
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 |
|
|||||
|
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
|
![]() |
| Marcadores |
| Herramientas de hilo | Buscar en este Hilo |
| Modos de visualización | Vota a este hilo |
|
|