Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Unix
Unix Forum d'entraide sur les systèmes Unix et dérivés (*BSD, AIX, etc.). Avant de poster ->F.A.Q BSD F.A.Q. Aix
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 23/11/2009, 08h17   #1
Invité de passage
 
Inscription : juin 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 22
Points : 3
Points : 3
Envoyer un message via ICQ à sdblepas
Par défaut 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
sdblepas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2009, 12h29   #2
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 129
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 129
Points : 8 749
Points : 8 749
Bonjour,

Tel que tu l'as ecrite, la ligne de ton script :
Code :
i=grep "total doc number = " agent_9501.log | tail -1 # get one line of the doc number
met dans i le code de retour de grep, afin de savoir si tout s'est bien passe ou non.

Ce qui t'interesse, c'est le retour de la ligne. Pour cela, il faut ecrire le code suivant (noter les backquotes) :
Code :
i=`grep "total doc number = " agent_9501.log | tail -1` # get one line of the doc number
Ensuite, pour couper ta chaine, je te conseille de regarder cut, qui fait exactement ce que tu veux.
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2009, 22h34   #3
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 908
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 908
Points : 1 258
Points : 1 258
Citation:
Envoyé par gangsoleil Voir le message
Bonjour,

Tel que tu l'as ecrite, la ligne de ton script :
Code :
i=grep "total doc number = " agent_9501.log | tail -1 # get one line of the doc number
met dans i le code de retour de grep, afin de savoir si tout s'est bien passe ou non.
Pas vraiment, cette ligne affecte la valeur "grep" à la variable "i" puis tente d'exécuter en lui passant "agent_9501.log" comme paramètre la commande "total doc number = ", commande qui n'existe pas bien sûr. La dernière ligne de la sortie standard de cette commande qui n'existe pas est affichée, autant dire, rien. En revanche, le shell doit afficher un message d'erreur comme quoi la commande "total doc number = " n'existe pas.
Citation:
Ce qui t'interesse, c'est le retour de la ligne. Pour cela, il faut ecrire le code suivant (noter les backquotes) :
Code :
i=`grep "total doc number = " agent_9501.log | tail -1` # get one line of the doc number
Oui, je préfère l'équivalent mais plus moderne:
Code :
i=$(grep "total doc number = " agent_9501.log | tail -1) # get one line of the doc number
__________________
ɹǝsn *sıɹɐlos*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 05h05.


 
 
 
 
Partenaires

Hébergement Web