#1 Le 23/11/2009, à 08:18
- sdblepas
[RESOLU]script pour debutant
Bonjour a tous
J'essaie de faire un script qu ouvre un fichier
lit un ligne precise (via grep) et retourne une partie de ce meme grep (via sed)
voila le code
#!/bin/sh
cd /exlibris/primo/p2_1/ng/jaguar/home/profile/log #open se_log
i=grep "total doc number = " agent_9501.log | tail -1 # get one line of the doc number
echo $i
dans i je dois avoir "2009.11.22 18:21:36 slice id: 1 OUTPUT>total doc number = 821126"
apres j'aimerais creer une variable avec 821126 dedans pour faire un echo de ce chiffre
Merci beaucoup
Dernière modification par sdblepas (Le 23/11/2009, à 10:02)
Hors ligne
#2 Le 23/11/2009, à 09:55
- MrAzerty
Re : [RESOLU]script pour debutant
Salut
Avec ta méthode (pas mal)
#!/bin/sh
cd /exlibris/primo/p2_1/ng/jaguar/home/profile/log #open se_log
i=$(grep "total doc number = " agent_9501.log | tail -1 | cut -d ' ' -f 10) # get one line of the doc number
echo $i
Remarque: Si tu veux juste afficher le résultat, il est inutile de passer par une variable.
Dans ce cas, supprime la dernière ligne, et remplace l'avant dernière par:
grep "total doc number = " agent_9501.log | tail -1 | cut -d ' ' -f 10
Autre méthode (meilleure)
#!/bin/sh
FICHIER_ENTREE=/exlibris/primo/p2_1/ng/jaguar/home/profile/log/agent_9501.log
CHAINE_RECHERCHEE="total doc number"
awk -v chaine_recherchee=$CHAINE_RECHERCHEE '(index($0,chaine_recherchee)>0){print $10}' $FICHIER_ENTREE)
Remarque: Si tu a plusieurs fois la chaine recherchée dans ton fichier, et que tu n'en veut qu'une, ajoute ceci à la fin de la dernière ligne:
| tail -1
Attention, je n'ai rien testé!
Dernière modification par MrAzerty (Le 23/11/2009, à 10:04)
On est toujours le geek de quelqu'un.
Hors ligne
#3 Le 23/11/2009, à 10:01
- sdblepas
Re : [RESOLU]script pour debutant
j'ai trouve une autre solution (sur un forum)
#!/bin/sh
var=$(sed -n '/total doc number =/{s/.*= //p}' agent_9501.log| uniq)
echo they are $var records in this data base
Merci
Hors ligne