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

moun - 21 avril 2005 à 17:27 - Dernière réponse :  andok
- 17 juil. 2017 à 11: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
Afficher la suite 

7 réponses

jipicy 43485 Messages postés jeudi 28 août 2003Date d'inscriptionContributeurStatut 7 novembre 2010 Dernière intervention - 21 avril 2005 à 21:56
+21
Utile
1
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]$
;-))
Cette réponse vous a-t-elle aidé ?  
kmf31 1569 Messages postés mercredi 30 mars 2005Date d'inscriptionContributeurStatut 27 février 2007 Dernière intervention - 21 avril 2005 à 17:37
+8
Utile
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
crabs 913 Messages postés lundi 18 avril 2005Date d'inscription 31 juillet 2008 Dernière intervention - 21 avril 2005 à 17:38
+2
Utile
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+
0
Utile
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
-4
Utile
ls -l toto |head -3