Forum Programmation.shell Grep qui rend 2 lignes en reponse

Posté par  .
Étiquettes : aucune
0
1
juin
2007
Bonjour à tous,

J'ai un script qui va chercher un hostname dans des fichiers.
Or pour l'un d'entre eux, j'ai deux reponses, soit 2 lignes.

RES=`grep "$HOST" FIC*`

Comment puis je extraire ces deux lignes dans deux variables differentes afin de faire un traitement dessus ?

à l'origine j'avais un
RES=`grep "$HOST" FIC* |awk -F";" '{print $5}'`
Mais à cause de ces deux lignes, ca ne fonctionne pas/plus.

J'ai mis de coté ces lignes en faisant un pré test pour compter le nombre de lignes
NB_LIGNE=`grep -i "$HOST" FIC* | wc -l `
et ainsi faire le traitement uniquement si j'ai une reponse unique, et logguer dans un fichier mes hosts qui posent un pb.

Merci pour votre aide
  • # .

    Posté par  . Évalué à 6.

    tu peux t'amuser avec une boucle for. Je pense que ca correspond un peu à ta situation : faire pour chaque ligne de resultat une action :
    for i in `grep "$HOST" FIC* |awk -F";" '{print $5}'`
    do
             ...
    done
    
  • # 1

    Posté par  . Évalué à 3.

    # bourin powered
    RES1=`grep "$HOST" FIC* |awk -F";" '{ if (NR==1) print $5}'`
    RES2=`grep "$HOST" FIC* |awk -F";" '{ if (NR==2) print $5}'`

    j'ajouterai que quitte à utiliser awk, autant lui faire faire le grep. t'economise un pipe et un process
    • [^] # Re: 1

      Posté par  . Évalué à 1.

      tant qu'on y est, autant utiliser cut plutôt que awk :-)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.