![]() |
|
|
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 |
| 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 |
![]() |
|
|
Linkback vínculo | Herramientas de hilo | Buscar en este Hilo | Tasa de Hilo | Modos de visualización |
|
|
|
||||
|
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.. |
|
||||
|
algo como esto se puede probar:
Código:
awk '$4=="BSNLSERVICE1"&&$6=="2128" { count++ } END { print "BSNLSERVICE1-->2128-->" count }' file_name.txt
|
|
||||
|
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
|
|
||||
|
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*
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' 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
Cita:
|
|
||||
|
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 |
|
||||
|
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*
Gracias de antemano Última edición por aemunathan; al 06-07-2009 02:36 PM.. Motivo: un requisito más !!!!!! |
![]() |
| Marcadores |
| Herramientas de hilo | Buscar en este Hilo |
| Modos de visualización | Vota a este hilo |
|
|