Posez votre question Signaler

Afficher une ligne particulière d'un fichier [Résolu]

moun - Dernière réponse le 12 mai 2010 à 00:13
bonjour

je voudrais savoir comment extraire ou afficher une ligne particulière d'un fichier en shell (par exemple : la ligne 3 du fichier toto) pour en faire une variable

merci
Lire la suite 

Afficher une ligne particulière d'un fichier »

5 réponses
Réponse
+15
moins plus
Salut,

Tu peux faire ça avec "sed" aussi:
soit le fichier "fich"
[jp@Mandrake scripts]$ cat fich

nom_fichier_1 ; commentaire associé au fichier 1
nom_fichier_2 ; commentaire associé au fichier 2
nom_fichier_4 ; commentaire associé au fichier 4
nom_fichier_5 ; commentaire associé au fichier 5
nom_fichier_7 ; commentaire associé au fichier 7
nom_fichier_9 ; commentaire associé au fichier 9
nom_fichier_10 ; commentaire associé au fichier 10
nom_fichier_12 ; commentaire associé au fichier 12
nom_fichier_14 ; commentaire associé au fichier 14
nom_fichier_15 ; commentaire associé au fichier 15
nom_fichier_16 ; commentaire associé au fichier 16

Pour extraire la 3 ème ligne
[jp@Mandrake scripts]$ sed -n 3p fich
nom_fichier_4 ; commentaire associé au fichier 4

La 5 ème :
[jp@Mandrake scripts]$ sed -n 5p fich
nom_fichier_7 ; commentaire associé au fichier 7

Pour la récupérer dans une variable :
[jp@Mandrake scripts]$ var=`sed -n 5p fich`
[jp@Mandrake scripts]$ echo $var
nom_fichier_7 ; commentaire associé au fichier 7
[jp@Mandrake scripts]$
;-))
Ajouter un commentaire
Réponse
+5
moins plus
Pour avoir la ligne X (=nombre comme 1,2,3, ...) tu peux faire:

LINE=`head -X fichier | tail -1`

(ici tu remplace X par le nombre et fichier par le nom de ton fichier).

Apres tu peux chercher pour un mot avec:

LINE=`grep mot fichier`

pour avoir (toutes) les lignes du fichier contenant "mot" (tu mettras ce que tu veux).

Regarde la doc avec "man grep", "man tail", "man head" etc.

Apres le resultat se trouve dans $LINE, donc pour afficher tu fais:

echo $LINE
Ajouter un commentaire
Réponse
+4
moins plus
Salut,
Doit y avoir pas mal de solutions, perso
j'utilise une combinaison de head et tail si le fichier est petit (-de 8ko)
var=`head -$nu_ligne $fichier | tail -1`

Ou alors awk pour les fichiers plus gros
var=`awk -v l=$nu_ligne 'NR==l{ print }' $fichier`

Bien sur nu_ligne est la variable contenant le numéro de ligne,
fichier le chemin d'accès au fichier.
A+
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour,
merci pour les tips !
depuis des années je fais des :
$ cat FICHIER |grep -n '' | grep "^$NUM_LIGN:"


un peu gore ...
ma vie va changé :p
Ajouter un commentaire
Réponse
-2
moins plus
ls -l toto |head -3
Ajouter un commentaire
Ce document intitulé « afficher une ligne particulière d'un fichier » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?