[sh] script pour debutant

Résolu
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
Configuration: Windows XP
Safari 532.5

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Salut,

    Affiche un bout de ton fichier "agent_9501.log" (contenant la partie à extraire) et dis-nous exactement ce que tu veux en sortie...

    Déjà ta variable devrait plus ressembler à ça :

    i=$(grep "total doc number = " agent_9501.log | tail -1)

    1. Bonjour
      j'avais deja vu cette erreur mais echo $i n'affiche toujours rien
      dans mon fichier il y a plein de ligne:
      2009.11.22 18:21:35 slice id: 1 OUTPUT>Starting slice
      2009.11.22 18:21:36 slice id: 1 OUTPUT>total doc number = 821126
      2009.11.22 18:21:36 slice id: 1 OUTPUT>warming engine ...
      2009.11.22 18:21:49 slice id: 1 OUTPUT>warmup completed
      2009.11.22 18:21:53 slice id: 1 OUTPUT>Building frbrgroup cache. size: 4 MB, time: 3433 ms.
      je veux recuperer ce chiffre 821126
      Merci
      1. Modérateur
        Re-

        jp@MDK:~/tmpfs ssh$ cat plop
        2009.11.22 18:21:35 slice id: 1 OUTPUT>Starting slice
        2009.11.22 18:21:36 slice id: 1 OUTPUT>total doc number = 821126
        2009.11.22 18:21:36 slice id: 1 OUTPUT>warming engine ...
        2009.11.22 18:21:49 slice id: 1 OUTPUT>warmup completed
        2009.11.22 18:21:53 slice id: 1 OUTPUT>Building frbrgroup cache. size: 4 MB, time: 3433 ms.
        
        jp@MDK:~/tmpfs ssh$ var=$(sed -n '/total doc number =/{s/.*= //p}' plop)
        
        jp@MDK:~/tmpfs ssh$ echo "$var"
        821126
        
        jp@MDK:~/tmpfs ssh$
        
        ;-))
        1. Merci beaucoup
          Mais comme cette ligne apparait plusieur fois je me retrouve avec 821126 821126 821126 821126 dans var, comment je fais pour n'avoir quune iteration dans var?
          Merci
          1. Modérateur
            jp@MDK:~/tmpfs ssh$ var=$(sed -n '/total doc number =/{s/.*= //p}' plop | uniq)
            
            jp@MDK:~/tmpfs ssh$ echo "$var"
            821126
            
            jp@MDK:~/tmpfs ssh$

            ;-))