mieux que grep ?

Le
christian
Bonjour,

dans un script, j'utilise la commande grep pour trouver une chaîne qui est
unique (un hash) dans un fichier texte énorme.

Mon problème est que la commande parcourt tout le fichier même si la
réponse est en première ligne (du coup ça mouline un moment).

ça doit être trivial mais je n'arrive pas à trouver une solution plus
propre.

Merci pour vos réponses

--
Christian
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Eric Masson
Le #26544195
christian 'Lut,
Mon problème est que la commande parcourt tout le fichier même si la
réponse est en première ligne (du coup ça mouline un moment).

Sur un BSD grep, la documentation de l'option -m cadre avec le cas
d'emploi présent.
Cela devrait probablement être similaire avec un GNU grep
raisonnablement récent.
--
Mais comment vous faites pour en trouver des comme ça ?
Pourquoi moi ça ne m'arrive jamais ?
-+- SP in GNU : le lecteur de news a mal configuré son neuneu -+-
Nicolas George
Le #26544194
christian , dans le message écrit :
dans un script, j'utilise la commande grep pour trouver une chaîne qui est
unique (un hash) dans un fichier texte énorme.
Mon problème est que la commande parcourt tout le fichier même si la
réponse est en première ligne (du coup ça mouline un moment).

Peut-être que c'est le moment de songer à une autre manière de
structurer les données ?
Marc SCHAEFER
Le #26544196
Nicolas George
Peut-être que c'est le moment de songer à une autre manière de
structurer les données ?

oui, je suggérerais un index DBM (p.ex. tied à un Perl hash),
ou une base de données plus complète, en fonction des
besoins.
christian
Le #26544198
Le Thu, 23 Apr 2020 11:59:00 +0200, Eric Masson a écrit :
christian 'Lut,
Mon problème est que la commande parcourt tout le fichier même si la
réponse est en première ligne (du coup ça mouline un moment).

Sur un BSD grep, la documentation de l'option -m cadre avec le cas
d'emploi présent.

Super !
grep -m 1 correspond à ce que je cherchais
Merci!
--
Christian
christian
Le #26544197
Le Thu, 23 Apr 2020 10:05:11 +0000, Nicolas George a écrit :
Peut-être que c'est le moment de songer à une autre manière de
structurer les données ?

C'est un fichier livré tel que.
La solution donnée par Eric convient parfaitement au but recherché.
Merci
--
Christian
Benoit Izac
Le #26544200
Bonjour,
Le 23/04/2020 à 11:48, christian dans le message
dans un script, j'utilise la commande grep pour trouver une chaîne qui
est unique (un hash) dans un fichier texte énorme.
Mon problème est que la commande parcourt tout le fichier même si la
réponse est en première ligne (du coup ça mouline un moment).
ça doit être trivial mais je n'arrive pas à trouver une solution plus
propre.

Si on a un grep qui ne supporte pas l'option « -m » (ce qui doit être
rare mais, vu que cette option n'est pas POSIX, ça doit sûrement
exister), on peut s'en sortir avec sed :
sed -ne '/le_hash/{p;q}' le_fichier_énorme
--
Benoit Izac
christian
Le #26544203
Le Thu, 23 Apr 2020 13:05:27 +0200, Benoit Izac a écrit :
sed -ne '/le_hash/{p;q}' le_fichier_énorme

je garde ça dans un coin
merci
--
Christian
Nicolas George
Le #26544210
christian , dans le message écrit :
C'est un fichier livré tel que.

Ce qui n'impose pas de l'utiliser tel quel.
La solution donnée par Eric convient parfaitement au but recherché.

Au but recherché à court terme, pas à moyen-long terme.
christian
Le #26544222
Le Thu, 23 Apr 2020 12:15:07 +0000, Nicolas George a écrit :
christian , dans le message écrit :
C'est un fichier livré tel que.

Ce qui n'impose pas de l'utiliser tel quel.
La solution donnée par Eric convient parfaitement au but recherché.

Au but recherché à court terme, pas à moyen-long terme.

Je suis tout à fait d'accord avec toi.
Mais comme je suis bientôt en retraite , l'utilisation que j'en fait est
simplement ludique et c'est par curiosité que je me suis lancé dans
l'écriture d'un script (ce qui n'est pas une excuse, j'en conviens).
Évidemment, si j'avais 25 ans et que je doive en faire mon métier...
--
Christian
Publicité
Poster une réponse
Anonyme