Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
870 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Afficher une ligne d'un fichier à partir d'un numéro de ligne

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Afficher une ligne d'un fichier à partir d'un numéro de ligne

n°1009990
Tomate
Posté le 11-02-2008 à 09:48:24  profilanswer
 

salut,
 
y a-t-il une commande qui permette de prendre en option un numéro de ligne pour afficher cette ligne depuis un fichier ?
grep/cat/... ne l'ont pas visiblement :/
 
merci :)


---------------
:: Light is Right ::
mood
Publicité
Posté le 11-02-2008 à 09:48:24  profilanswer
 

n°1009992
o'gure
Modérateur
Multi grognon de B_L
Posté le 11-02-2008 à 09:58:30  profilanswer
 

awk ?
head/tail ?


---------------
Relax. Take a deep breath !
n°1009994
Tomate
Posté le 11-02-2008 à 10:00:36  profilanswer
 

head et tail je voulais éviter ;)
 
awk, hum faut que je vois ;)
 
en fait je cherchais une commande qui fasse ça en une seule fois


---------------
:: Light is Right ::
n°1009995
Tomate
Posté le 11-02-2008 à 10:05:55  profilanswer
 

bon tant pis, j'ai fait à la porc avec head/tail, ça rame bien :D
 
merci quand même ;)


---------------
:: Light is Right ::
n°1010000
o'gure
Modérateur
Multi grognon de B_L
Posté le 11-02-2008 à 10:15:58  profilanswer
 

Après avoir regardé vite fait :

awk 'NR==3' infile


devrait t'extraire la 3ème ligne


---------------
Relax. Take a deep breath !
n°1010008
Tomate
Posté le 11-02-2008 à 10:25:43  profilanswer
 

ah oui effectivement merci :)
 
c'est plus rapide mais pas tellement finalement :??:


---------------
:: Light is Right ::
n°1010183
matafan
Posté le 11-02-2008 à 16:37:02  profilanswer
 

sed -n 3p infile


Message édité par matafan le 11-02-2008 à 16:37:17
n°1010381
Tomate
Posté le 12-02-2008 à 08:58:07  profilanswer
 

merci ;)


---------------
:: Light is Right ::
n°1013870
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 22-02-2008 à 12:12:05  profilanswer
 

Pour les perfs, ca dépend si tu veux extraire juste une ligne, ou plusieurs.

 

Les trucs genre :


head -$i fichier2.txt | tail -1
sed -n "$i p" fichier2.txt
awk "NR==$i" fichier2.txt
nl fichier2.txt | grep "[    ]\+$i[   ]\+" | cut -f 2


c'est bien pour extraire juste une ligne occasionnellement, mais c'est
très mauvais si tu dois répéter l'opération, tu lis tout le fichier à chaque fois que tu veux une ligne (enfin presque tout)

 

Et avec la solution avec pipe tu prends cher en plus :D
Si je tente la totale (pour rire, niveau algo c'est archi merdique):


for((i=0 ; i<`cat fichier.txt | wc -l` ; i++)); do
    head -$i fichier2.txt | tail -1
done

c'est à dire à chaque itération 2 lectures complètes du fichier + 2
pipes (test du for + corps du for), la commande time m'indique
gentillement 23 secondes pour lire 200 lignes sur ma machine.

 

Evidemment là faut utiliser des file descriptors + un compteur, comme ca ca roule  :hello:


Message édité par Xavier_OM le 22-02-2008 à 12:12:52

---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°1014110
Tomate
Posté le 22-02-2008 à 17:06:43  profilanswer
 

;)


---------------
:: Light is Right ::

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Afficher une ligne d'un fichier à partir d'un numéro de ligne

 

Sujets relatifs
Créer un rpm à partir de fichiers sans compilationRepartitionner Fedora en ligne de commande
[Cygwin] Pb d'execution en ligne de commande.Logiciel d'édition de fichier .ts
recherche contenu fichierzabbix_server
Attribuer des comptes et droits sur les fichier pour un nouveau progVue graphique d'un fichier audio
Formater HDD et installer à partir CD Ubuntu? 
Plus de sujets relatifs à : Afficher une ligne d'un fichier à partir d'un numéro de ligne


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR