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

Signaler
-
 andok -
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

6 réponses

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
5 décembre 2019
4 742
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]$
;-))
28
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 61940 internautes nous ont dit merci ce mois-ci

Merci beaucoup mon cher.
Messages postés
1569
Date d'inscription
mercredi 30 mars 2005
Statut
Contributeur
Dernière intervention
27 février 2007
483
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
Messages postés
912
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
31 juillet 2008
490
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+
sed -n 3p toto
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
ls -l toto |head -3