Signaler

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

Posez votre question moun - Dernière réponse le 17 juil. 2017 à 11:13 par 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
Utile
+23
plus moins
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é ?  
andok- 17 juil. 2017 à 11:13
Merci beaucoup mon cher.
Répondre
Utile
+9
plus moins
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
Utile
+3
plus moins
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+
Utile
+2
plus moins
sed -n 3p toto
Utile
+1
plus moins
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
Utile
-3
plus moins
ls -l toto |head -3

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !