Lecture ligne n°x

Lecture ligne n°x - Shell/Batch - Programmation

Marsh Posté le 31-10-2006 à 18:41:41    

Salut,
Ca fait plusieurs heures que je cherche une commande que je pensais etre toute simple, dans un fichier batch je voudrais savoir comment faire pour afficher une ligne spécifique d'un fichier externe. Je voudrais afficher une ligne par rapport à son numéro. Exemple afficher ligne numero 20 du fichier. C'est peut etre simplement un parametre avec la commande cat mais je ne le trouve pas dans la man... help

Reply

Marsh Posté le 31-10-2006 à 18:41:41   

Reply

Marsh Posté le 31-10-2006 à 18:50:54    

C'est assez simple à faire avec un awk:
 
awk -v ligne=20 ' NR ~ ligne { print $0 } ' fichier

Reply

Marsh Posté le 31-10-2006 à 23:33:17    

C'est simple mais je n'etais pas pres de trouver. Merci morpheas

Reply

Marsh Posté le 01-11-2006 à 19:12:08    

Juste une petite amélioration :

awk -v ligne=20 ' NR == ligne { print $0 ; exit} ' fichier


Il est aussi possible d'utiliser sed :

sed -n "10{p;q;}" fichier

Message cité 1 fois
Message édité par aigles le 01-11-2006 à 19:14:32

---------------
Jean Pierre.
Reply

Marsh Posté le 23-11-2006 à 18:23:47    

aigles a écrit :

sed -n "10{p;q;}" fichier



 
Suffit de faire
 

sed -n 10p fichier


 
Après, plus facile à se rappeler mais plus long, y'a le bête et méchant
 

head -10 fichier | tail -1

Reply

Marsh Posté le 23-11-2006 à 22:11:37    

bernard_black a écrit :

Suffit de faire

sed -n 10p fichier




 
C'est effectivement plus simple, mais cela à le gros inconvénient de lire le fichier jusqu'à la fin.
Si ton fichier fait un million de lignes, tu vas les lire toutes alors que tu te moques de ce qui se passe après la ligne 10.
 
Ma version affiche la ligne 10 et arrête la lecture du fichier.
Sur un tout petit fichier ça ne fait pas de différence sensible, mais sur un gros fichier l'économie est appréciable.
 


---------------
Jean Pierre.
Reply

Marsh Posté le 23-11-2006 à 23:35:03    

aigles a écrit :

C'est effectivement plus simple, mais cela à le gros inconvénient de lire le fichier jusqu'à la fin.
Si ton fichier fait un million de lignes, tu vas les lire toutes alors que tu te moques de ce qui se passe après la ligne 10.
 
Ma version affiche la ligne 10 et arrête la lecture du fichier.
Sur un tout petit fichier ça ne fait pas de différence sensible, mais sur un gros fichier l'économie est appréciable.


sed -n '10{p;q}'

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed