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
Registros sobre la base de una palabra clave en los registros aemunathan Programación de scripts de shell y 4 03-03-2009 08:39 AM
la validación de un archivo basado en las condiciones trichyselva Programación de scripts de shell y 8 01-02-2009 08:51 AM
Sobre la base de número de registros en la necesidad de comprobar archivo1 en archivo2 registros para configurar algunos condns mavesum Programación de scripts de shell y 3 11-26-2008 10:48 AM
extraer algunas líneas sobre la base de condiciones prvnrk Programación de scripts de shell y 4 10-17-2008 06:24 AM
Cuenta N º de registros en archivos de cabecera y sin contar Tráiler Documentos guiguy Programación de scripts de shell y 2 06-07-2007 01:15 PM

Reply
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 06-05-2009
aemunathan aemunathan is offline
Usuario Registrado
  
 

Fecha: Mayo 2008
Puestos: 75
usando awk de no contar con registros sobre la base de condiciones

Hola

Tengo archivos con fecha y hora en la carpeta nombres como 200906051400,200906051500,200906051600 ..... 24 archivos, por lo tanto, todos los días se generará

i necesidad de hacer ciertas cosas en este 24 expedientes al día

archivo contiene los datos como
Código:
200906050016370   0   1244141195225298lessrv3       BSNLSERVICE1                  BSNLSERVICE1                  2128                                                        LOCATIONMANAGER          SLIR                 919443200299   MSISDN  ASC   919443200299   0   SUCCESS                                           1244141195225298less      919443200299        124414      79.301938811.6885305NORMAL    DELAY_                                                                                                                                                                                                                                                                                      WGS84  
200906050016440   0   1244141197503299lessrv3       BSNLSERVICE1                  BSNLSERVICE1                  2139                                                        LOCATIONMANAGER          SLIR                 919449838266   MSISDN  ASC   919449838266   0   SUCCESS                                           1244141197503299less      919449838266        124414      74.739722013.3302837NORMAL    DELAY_                                                                                                                                                                                                                                                                                      WGS84  
200906050017070   0   1244141224604306lessrv3       BSNLSERVICE1                  BSNLSERVICE1                  2128                                                        LOCATIONMANAGER          SLIR                 919448010097   MSISDN  ASC   919448010097   1   SYSTEM FAILURE                                    1244141224604306less      919448010097        124414                          NORMAL    DELAY_                                                                                                                                                                                                                                                                                      WGS84  
200906050017110   0   1244141227460308lessrv3       BSNLSERVICE1                  BSNLSERVICE1                  2128                                                        LOCATIONMANAGER          SLIR                 919449838266   MSISDN  ASC   919448010098   1   SYSTEM FAILURE                                    1244141227460308less      919449838266   124414                          NORMAL    DELAY_                                                                                                                                                                                                                                                                                      WGS84  

20090605140148        1204702370366140lessrv3                                     RTMS                          0                                                           TRACKING                 tlrep                                                            0   SUCCESS                                                                                         1                                                                                                                                                                                                                                                                                                                                     WGS84  
200906051402100   0   1195202147789210lessrv3       RTMS                          RTMS                                                                                      LOCATIONMANAGER          SLIR                 919446001620   MSISDN  ASC   919446001620   526 INACTIVE SUBSCRIBER                               1195202147789210less                          124419                          NORMAL    DELAY_                                                                                                                                                                                                                                                                                      WGS84  
200906051402100   0   1195202147789210lessrv3       RTMS                          RTMS                                                                                      LOCATIONMANAGER          SLIR                 919446001618   MSISDN  ASC   919446001618   526 INACTIVE SUBSCRIBER                               1195202147789210less                          124419                          NORMAL    DELAY_                                                                                                                                                                                                                                                                                      WGS84  
200906051402100   0   1195202147789210lessrv3       RTMS                          RTMS                                                                                      LOCATIONMANAGER          SLIR                 919446001617   MSISDN  ASC   919446001617   526 INACTIVE SUBSCRIBER                               1195202147789210less                          124419                          NORMAL    DELAY_                                                                                                                                                                                                                                                                                      WGS84

Necesito los scripts para realizar las siguientes
1. Se ha de filtrar los registros sobre la base de $ 4 y $ 6 (es decir, $ 4 \u003d\u003d BSNLSERVICE1 y $ 6 \u003d\u003d 2128) y contar el total de registros para el DIA (20090605 *)


SALIDA REQUERIDA:
BSNLSERVICE1 2128 \u003d\u003d 3


2. Se ha de filtrar los registros sobre la base de $ 4 y $ 6 (es decir, $ 4 \u003d\u003d BSNLSERVICE1 y $ 6 \u003d\u003d 2128) y contar el total de registros para el DIA (20090605 *) Y BASADA EN EL GRUPO DE $ 14 (es decir, ÉXITO, FRACASO)


SALIDA REQUERIDA:
BSNLSERVICE1 2128 ÉXITO \u003d\u003d 1
BSNLSERVICE1 2128 SISTEMA DE FALLO \u003d\u003d 2


3. Se ha de filtrar los registros sobre la base de $ 4 y $ 6 (es decir, $ 4 \u003d\u003d BSNLSERVICE1 y $ 6 \u003d\u003d 2128), grupo basado en $ 9 (es decir, 919448010098, 919446001618) y contar el total de registros para el DIA (20090605 *) para cada $ 9


SALIDA REQUERIDA:
919449838266 2
919448010097 1


salida debe ser de $ 4 y $ BSNLSERVICE1 \u003d\u003d \u003d\u003d 2128 sólo 6 .. otras cosas ($ 4 \u003d\u003d RTMS) no son necesarios.

Ayúdame PLS

Última edición por aemunathan; al 06-05-2009 09:33 AM..
  #2 (Enlace permanente)  
Old 06-05-2009
panyam panyam is offline Forum Advisor  
Usuario Registrado
  
 

Fecha: Sep 2008
Puestos: 474
algo como esto se puede probar:
Código:
awk '$4=="BSNLSERVICE1"&&$6=="2128" { count++ } END { print "BSNLSERVICE1-->2128-->" count }'  file_name.txt
restantes también casi iguales. un poco de modificación en la secuencia de comandos necesarios.
  #3 (Enlace permanente)  
Old 06-05-2009
Franklin52 Franklin52 is online now Forum Staff  
Moderador
  
 

Fecha: febrero 2007
Mensajes: 4.313
Pruebe esto:

Código:
awk -v day="20090605" -v serv="BSNLSERVICE1" -v val="2128" '
$1 ~ day && $4==serv && $6==val {
  s1++;a[$14]++;b[$9]++
}
END{
  print serv,val, "=" s1 "\n"
  print serv,val, a["SUCCESS"]
  print serv,val, a["SYSTEM"] "\n"
  for(i in b){print i, b[i]} 
}' file
Recuerdos
  #4 (Enlace permanente)  
Old 06-05-2009
aemunathan aemunathan is offline
Usuario Registrado
  
 

Fecha: Mayo 2008
Puestos: 75
Hola panyam y Franklin

He seguido el método sugerido por su panyam dar resultado útil.

aquí va, como en el fin de: i solicitado.

Código:
1.
awk '$4=="BSNLSERVICE1"&&$6=="2128" { count++ } END { print "BSNLSERVICE1-->2128-->" count }' 20090604*

2. 

awk '$4=="BSNLSERVICE1"&&$6=="2128"{ b[$14]++}  END {for(i in b){print i, b[i]}  }' 20090604*

3.
awk '$4=="BSNLSERVICE1"&&$6=="2128"{ b[$9]++}  END {for(i in b){print i, b[i]}  }' 20090604*
una cosa que necesito saber si es posible obtener el nombre de archivo a partir de la fecha de comandos.

realmente necesito para programar todas las noches a las 2:00 am y tengo que obtener el nombre del archivo a partir de la fecha de comandos

permite tomar el ejemplo
2.00 horas de esta noche la salida de la
Código:
date +'%Y%m%d'
es 20090606
i necesidad de dar el nombre del archivo como 20090605 * en el nombre del archivo de la parte awk ...


y para franklin .... i utilizada de esta manera
Código:
#!/usr/xpg4/bin/awk 
awk -v day="20090605" -v serv="BSNLSERVICE1" -v val="2128" '
$1 ~ day && $4==serv && $6==val {
  s1++;a[$14]++;b[$9]++
}
END{
  print serv,val, "=" s1 "\n"
  print serv,val, a["SUCCESS"]
  print serv,val, a["SYSTEM"] "\n"
  for(i in b){print i, b[i]} 
}' 200906051859
y obtuvo la respuesta que
Cita:
. / reconcil.sh
/ usr/xpg4/bin/awk: error de sintaxis de contexto es el siguiente:
>>>. / <<<
thank u
  #5 (Enlace permanente)  
Old 06-05-2009
Franklin52 Franklin52 is online now Forum Staff  
Moderador
  
 

Fecha: febrero 2007
Mensajes: 4.313
Para obtener la fecha de ayer, puede utilizar el script datecalc de Perderabo.
Coloque este script en el mismo directorio de su script con el nombre datecalc y hacerlo ejecutable:

días transcurridos entre 2 fechas

Su script debe tiene el siguiente aspecto:

Código:
#!/bin/ksh

dat=$(./datecalc -a $(date +"%Y %m %d") - 1)

day=$(/usr/xpg4/bin/awk -v d="$dat" 'BEGIN {split(d,a," ");day=sprintf("%s%02s%02s",a[1],a[2],a[3]);print day}')

/usr/xpg4/bin/awk -v d="$day" -v serv="BSNLSERVICE1" -v val="2128" '
$1 ~ day && $4==serv && $6==val {
  s1++;a[$14]++;b[$9]++
}
END{
  print "Filename: " FILENAME "\n"
  print serv,val, "=" s1 "\n"
  print serv,val, a["SUCCESS"]
  print serv,val, a["SYSTEM"] "\n"
  for(i in b){print i, b[i]} 
}' $day*
Otorgado bits / Imputados a Franklin52 para este post
Fecha Usuario Comentario Cantidad
06-06-2009 aemunathan Excelente trabajo realizado 50.000
  #6 (Enlace permanente)  
Old 06-06-2009
aemunathan aemunathan is offline
Usuario Registrado
  
 

Fecha: Mayo 2008
Puestos: 75
Hola

Muchas gracias hombre ... su agradable para ver el resultado ...

Necesito una más información. en realidad estoy usando sqlloader para insertar el resultado en un cuadro. Quiero aquí para imprimir la fecha anterior, así como en DD-MES-AAAA formato

He intentado de esta manera
Código:
#!/bin/ksh

dat=$(./datecalc -a $(date +"%Y %m %d") - 1)

da_te=$(date +'%d')

da=$(($da_te-1))

mon=$(date +'%b')

year=$(date +'%Y')

host=$(hostname)

day=$(/usr/xpg4/bin/awk -v d="$dat" 'BEGIN {split(d,a," ");day=sprintf("%s%02s%02s",a[1],a[2],a[3]);print day}')

/usr/xpg4/bin/awk -v d="$day" -v serv="BSNLSERVICE1" -v val="2128"  -v daet="$(($da)-($mon)-($year))" -v ho="$host"'
$1~day && $4==serv && $6==val {
  s1++
}
END{
  print daet, host,s1 
}' $day*
Ayúdame! el informe es del día anterior a fin de i necesidad de utilizar la fecha anterior durante la impresión.
Gracias de antemano

Última edición por aemunathan; al 06-07-2009 02:36 PM.. Motivo: un requisito más !!!!!!
Reply

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 07:11 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