The UNIX and Linux Forums  
Bonjour et bienvenu par les États-Unis à la UNIX et Linux Forums! Merci de votre visite et vous joindre à notre communauté mondiale.

Go Back   Les systèmes UNIX et Linux Forums > Top Forums > De programmation et de script Shell
.
google unix.com



De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici.

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
L'enregistrement sur la base d'un mot-clé dans les dossiers aemunathan De programmation et de script Shell 4 03-03-2009 08:39 AM
la validation d'un fichier basé sur des conditions trichyselva De programmation et de script Shell 8 01-02-2009 08:51 AM
Sur la base de nombre de dossiers dans file1 besoin de vérifier des dossiers dans file2 de fixer des condns mavesum De programmation et de script Shell 3 11-26-2008 10:48 AM
extrait les lignes repose sur quelques conditions prvnrk De programmation et de script Shell 4 10-17-2008 05:24 AM
Comte n ° de documents au dossier, sans compter tête et Trailer Records guiguy De programmation et de script Shell 2 06-07-2007 12: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 Thread Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 06-05-2009
aemunathan aemunathan is offline
Registered User
  
 

Join Date: Mai 2008
Posts: 75
utilisant awk compter pas d'enregistrements en fonction de conditions

Salut

J'ai des fichiers avec date et l'heure que le dossier des noms comme 200906051400,200906051500,200906051600 ..... donc tous les jours 24 dossiers seront générés

j'ai besoin de faire certaines choses sur ces 24 dossiers tous les jours

le fichier contient des données comme
Code:
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

i besoin de scripts pour faire ce qui suit
1. Il a pour filtrer les enregistrements en fonction de $ 4 et $ 6 (c'est-à-dire $ 4 \u003d\u003d BSNLSERVICE1 ET $ 6 \u003d\u003d 2128) et de compter l'ensemble des dossiers pour la journée (20090605 *)


SORTIE REQUISES:
BSNLSERVICE1 2128 \u003d\u003d 3


2. Il a pour filtrer les enregistrements en fonction de $ 4 et $ 6 (c'est-à-dire $ 4 \u003d\u003d BSNLSERVICE1 ET $ 6 \u003d\u003d 2128) et de compter l'ensemble des dossiers pour la journée (20090605 *) ET SUR LA BASE DE GROUPE $ 14 (c'est-à-dire SUCCESS, FAILURE)


SORTIE REQUISES:
BSNLSERVICE1 2128 SUCCESS \u003d\u003d 1
BSNLSERVICE1 2128 de défaillance du système \u003d\u003d 2


3. Il a pour filtrer les enregistrements en fonction de $ 4 et $ 6 (c'est-à-dire $ 4 \u003d\u003d BSNLSERVICE1 ET $ 6 \u003d\u003d 2128), GROUPE SUR LA BASE $ 9 (c'est-à-dire 919448010098, 919446001618) et de compter l'ensemble des dossiers pour la journée (20090605 *) POUR CHAQUE DISTINCT $ 9


SORTIE REQUISES:
919449838266 2
919448010097 1


la production devrait être de 4 $ \u003d\u003d BSNLSERVICE1 ET $ 6 \u003d\u003d 2128 que d'autres choses .. ($ 4 \u003d\u003d RTMS) ne sont pas nécessaires.

Aide-moi svp

Dernière édition par aemunathan; au 06.05.2009 08:33 AM..
  #2 (permalink)  
Old 06-05-2009
panyam panyam is offline Forum Advisor  
Registered User
  
 

Join Date: Sep 2008
Messages: 474
quelque chose comme cela, vous pouvez essayer:
Code:
awk '$4=="BSNLSERVICE1"&&$6=="2128" { count++ } END { print "BSNLSERVICE1-->2128-->" count }'  file_name.txt
reste presque identique. juste un peu de modification dans le script nécessaire.
  #3 (permalink)  
Old 06-05-2009
Franklin52 Franklin52 is online now Forum Staff  
Modérateur
  
 

Join Date: Feb 2007
Posts: 4,305
Essayez ceci:

Code:
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
Observe
  #4 (permalink)  
Old 06-05-2009
aemunathan aemunathan is offline
Registered User
  
 

Join Date: Mai 2008
Posts: 75
Salut panyam et de Franklin

j'ai suivi la méthode suggérée par panyam utile de donner son résultat.

ici, il va dans l'ordre i demandé.

Code:
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*
une chose que j'ai besoin de savoir s'il est possible de dériver le nom de fichier à partir de la date de commande.

effectivement j'ai besoin de programmer tous les soirs à 2h00 et j'ai besoin de tirer le nom du fichier à partir de la date de commande

permet de prendre l'exemple
2.00 am, ce soir, la sortie de la
Code:
date +'%Y%m%d'
est 20090606
j'ai besoin de donner le nom du fichier comme 20090605 * dans le nom du fichier de la partie awk ...


et pour franklin .... i utilisé de cette façon
Code:
#!/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
et a obtenu la réponse que
Citation:
. / reconcil.sh
/ usr/xpg4/bin/awk: erreur de syntaxe contexte est:
>>>. / <<<
thank u
  #5 (permalink)  
Old 06-05-2009
Franklin52 Franklin52 is online now Forum Staff  
Modérateur
  
 

Join Date: Feb 2007
Posts: 4,305
Pour obtenir la date d'hier, vous pouvez utiliser le script de DateCalc Perderabo.
Placez ce script dans le même répertoire que votre script avec le nom DateCalc et de le rendre exécutable:

jours se sont écoulés entre 2 dates

Votre script doit se présente comme suit:

Code:
#!/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*
Bits Awarded / Franklin52 d'accusation pour ce post
Date Utilisateur Commentaire Montant
06-06-2009 aemunathan Excellent travail accompli 50.000
  #6 (permalink)  
Old 06-06-2009
aemunathan aemunathan is offline
Registered User
  
 

Join Date: Mai 2008
Posts: 75
Salut

Merci beaucoup ... l'homme de sa belle pour voir le résultat ...

J'ai besoin d'un plus d'infos. utilisant sqlloader suis effectivement d'insérer le résultat dans un tableau. Ici, je veux imprimer la date précédente et en DD-MON-YYYY format

j'ai essayé de cette façon
Code:
#!/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*
Aide-moi! le rapport de la veille si j'ai besoin d'utiliser la date antérieure pendant l'impression.
Merci d'avance

Dernière édition par aemunathan; au 06.07.2009 01:36 PM.. Motif: une exigence de plus !!!!!!
Reply

Bookmarks

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 04:46 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0