Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
commande grep
Envoyé par: moi_lol

je voudrais s'avoir comment afficher la ligne suivante par rapport a un texte ....
je m'explique j'ai un fichier en local (nommer 'config.ini')
avec la commande grep je recherche la ligne auquel est marqué 'software version',j'enregistre dans un fichier temporaire (nommé 'tmp')et je lit le fichier 'tmp'
mais je veu pas afficher cette meme ligne mais plutot la ligne d'apres soit 'PT31x3-DLNK-0103d'

#!/bin/bash
clear
cd /home/
grep "software version" config.ini > tmp
echo "la version du logiciel est :" 
cat tmp
echo

le fichier ini ce présente comme ceci :


....
<serial number>
xxxxx
<software version>
PT31x3-DLNK-0103d
<current date>
2006/03/03
....

Poste le Tuesday 21 March 2006 11:55:45
Répondre     Citer    
Re: commande grep
Envoyé par: elfato

numligne=`cat -n config.ini | grep "software version" | awk '{print $1}' `
numlignevraie=`expr $numligne + 1`
cat -n config.ini | grep $numlignevraie | cut -d" " -f2 > tmp

pas le choix si tu connais pas le texte de la ligne que tu cherche il faut calculer le numero de la ligne ou est software version et faire + 1
pour envoyer la bonne ligne vers le fichier tmp


Poste le Tuesday 21 March 2006 12:33:34
Répondre     Citer    
Re: commande grep

En un seul passage, en une ligne et sans fichier temporaire

Avec awk :
 awk 'BEGIN { printnext=-12 } {  if ( $0 ~ /PT31x3-DLNK-0103d/ ) printnext=FNR ; if ( FNR==printnext+1  ) print $0   }'  FICHIER

--
Brugmans Frédéric

[www.brugmans.net]
[triathlon.sport-challenge.be]

Poste le Tuesday 21 March 2006 18:08:50
Répondre     Citer    
Re: commande grep
Envoyé par: Mushroom

Avec sed :

sed "{N;/<software version>/p}" -n FICHIER | sed 1d

"imprimer la ligne contenant <software version> et la ligne suivante" | "supprimer la première ligne". Ou en un passage :

sed "{N; s%<software version>\n%%p}" -n FICHIER

Mais si tu tiens vraiment à utiliser grep :

PRED_LINE=$(grep -n "<software version>" FICHIER | cut -f 1 -d ":")
sed $((PRED_LINE+1))p -n FICHIER

Poste le Tuesday 21 March 2006 19:38:04
Répondre     Citer    
Re: commande grep
Envoyé par: elfato

voila tu as toutes les methode des plus simples aux plus longues (perso sed est plus propre et surtout tu le trouvera sur plus de machines qu'awk...)


Poste le Wednesday 22 March 2006 11:07:46
Répondre     Citer    
Re: commande grep
Envoyé par: moi_lol

merci encore les gars ....
;-)

Poste le Wednesday 22 March 2006 14:12:18
Répondre     Citer    
Re: commande grep
Envoyé par: Sve@r

Citation
elfato
perso sed est plus propre et
surtout tu le trouvera sur plus de machines
qu'awk...
Ah non. Donner la préférence à sed ou awk est une affaire de goûts... mais les deux sont des outils standards qu'on trouve de partout.
Eventuellement "nawk" ou "gawk" qui sont plus perfectionnés peuvent parfois manquer... mais pas awk.


L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Thursday 23 March 2006 18:43:44
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
commande grep
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons