Page 1 sur 1
Unix : trouver les n dernières occurences dans un fichier
Publié : lun. 8 févr. 2016 11:55
par Zedoune
Bonjour !
Aujourd'hui la question
Comment récupérer rapidement les n dernières occurrences d'un motif dans un gros fichier texte ?
Car oui, j'ai mon fichier texte qui fait 15 Mo, je ne peux pas faire un tail parce qu'il faudrait prendre un certain nombre de lignes inconnu et ça pourrait ne pas marcher à tous les coups. Faire un grep sur le fichier avec un tail derrière, c'est long car on parcourt tout pour ne garder que les dernières occurences. La technique ?! Utiliser tac ! C'est comme cat mais à l'envers (mais ligne par ligne, il fait pas à l'envers complètement)
donc
linux :
tac $FICHIER | grep motif | head -n $NB_OCCURENCES
freebsd :
tail -r $FICHIER | grep motif | head -n $NB_OCCURENCES
(sous linux tac existe mais pas sous freebsd, sous freebsd tail peut faire tac avec -r mais le tail de linux n'a pas cette option)
Elles arriveront pas dans l'ordre, la première occurence étant la toute dernière, suffit de rajouter | tac pour remettre dans le bon ordre si nécessaire

Voilou !
Unix : trouver les n dernières occurences dans un fichier
Publié : lun. 8 févr. 2016 11:58
par dsebire
je vois pas la différence avec un simple grep puisque tu vas quand même parcourir tout le fichier (a l'envers mais ça change rien)
Unix : trouver les n dernières occurences dans un fichier
Publié : lun. 8 févr. 2016 11:58
par Zedoune
je vois pas la différence avec un simple grep puisque tu vas quand même parcourir tout le fichier (a l'envers mais ça change rien)
non car tu utilises un pipe, quand head aura atteint son objectif, la commande totale s'arrête
Unix : trouver les n dernières occurences dans un fichier
Publié : lun. 8 févr. 2016 12:03
par dsebire
euh....
t sur ?
pour moi ça travaille pas ligne par ligne (ce que tu sous entend) mais en asynchrone. (heureusement d'ailleurs sinon perfs minables)
si ton tac va plus vite que ton grep par ex (ce qui est quasi certain), tu va remplir le pipe (buffer) ce qui fait que tu vas quand même lire le fichier en entier ou presque.
bon évidement, il va arrêter de lire lorsque le fifo du pipe aura attend la limite, mais sur les pipe, c'est assez élevé.
Unix : trouver les n dernières occurences dans un fichier
Publié : lun. 8 févr. 2016 12:04
par dsebire
non car tu utilises un pipe, quand head aura atteint son objectif, la commande totale s'arrête
PS: je suis le seul a avoir l'esprit très mal placé ??????

Unix : trouver les n dernières occurences dans un fichier
Publié : lun. 8 févr. 2016 12:11
par Zedoune
Unix : trouver les n dernières occurences dans un fichier
Publié : mar. 9 févr. 2016 11:57
par Zedoune
euh....
t sur ?
pour moi ça travaille pas ligne par ligne (ce que tu sous entend) mais en asynchrone. (heureusement d'ailleurs sinon perfs minables)
si ton tac va plus vite que ton grep par ex (ce qui est quasi certain), tu va remplir le pipe (buffer) ce qui fait que tu vas quand même lire le fichier en entier ou presque.
bon évidement, il va arrêter de lire lorsque le fifo du pipe aura attend la limite, mais sur les pipe, c'est assez élevé.
La taille du buffer du pipe est défini avec ulimit (ulimit -a pour toutes les infos, et ulimit -p pour avoir le nombre)
Sous freebsd elle est par défaut de 1x512 bytes, sous Linux (Debian 6 et Ubuntu 14.04) 8x512 bytes, donc je pense pas que tu parcoures complètement ton fichier avec tac

Unix : trouver les n dernières occurences dans un fichier
Publié : mar. 9 févr. 2016 12:04
par dsebire
je voyais ça bcp plus gros

pt 'être des modifs faites sur les bécanes sur lesquelles je bossais avant.
aujourd'hui suis a 8*512
Unix : trouver les n dernières occurences dans un fichier
Publié : mar. 9 févr. 2016 12:08
par Zedoune
je voyais ça bcp plus gros

pt 'être des modifs faites sur les bécanes sur lesquelles je bossais avant.
aujourd'hui suis a 8*512
oui j'étais étonnée de voir que c'était aussi petit !
C'est important d'être précis [:al0y]
Maintenant j'essaie toujours de trouver des sources fiables d'informations, parce que de plus en plus sur internet on patauge dans la médiocrité et du copier-coller
Unix : trouver les n dernières occurences dans un fichier
Publié : sam. 30 juil. 2016 18:56
par yoplait21
merci ubuntu ? ... ok je sors .....
edit : rho putain le déterrage .... ok j'assume
Unix : trouver les n dernières occurences dans un fichier
Publié : sam. 30 juil. 2016 22:58
par Zedoune
merci ubuntu ? ... ok je sors .....
gné ?

Unix : trouver les n dernières occurences dans un fichier
Publié : dim. 31 juil. 2016 13:53
par yoplait21
"Maintenant j'essaie toujours de trouver des sources fiables d'informations, parce que de plus en plus sur internet on patauge dans la médiocrité et du copier-coller" ....
perso je fais une relation entre ubuntu et cet état de fait

Unix : trouver les n dernières occurences dans un fichier
Publié : dim. 31 juil. 2016 13:58
par Zedoune
"Maintenant j'essaie toujours de trouver des sources fiables d'informations, parce que de plus en plus sur internet on patauge dans la médiocrité et du copier-coller" ....
perso je fais une relation entre ubuntu et cet état de fait

Nan pour le coup y a pas de rapport
