Je veux localiser une date qui se trouve quelque part dans un journal de 8 Go (texte).
Puis-je contourner quelque peu une lecture séquentielle complète, et d'abord faire des fractionnements binaires du fichier (taille), ou naviguer d'une manière ou d'une autre dans le système de fichiers inodes
(que je connais très peu sur), pour commencer à lire à partir de chaque point de partage, jusqu'à ce que je trouve un décalage approprié à partir duquel commencer ma recherche de texte pour une ligne contenant la date ?
tail
La lecture de la dernière ligne n'utilise pas une lecture séquentielle normale, donc je me demande si cette fonctionnalité est d'une manière ou d'une autre disponible dans bash, ou aurais-je besoin d'utiliser Python ou C/C++… mais je suis spécifiquement intéressé par un bash
possibilité..
Réponse acceptée :
for (( block = 0; block < 16; block += 1 ))
do
echo $block;
dd if=INPUTFILE skip=$((block*512))MB bs=64 count=1 status=noxfer 2> /dev/null |
head -n 1
done
qui .. ne crée aucun fichier temporaire, saute des blocs * 512 Mo de données à chaque exécution, lit 64 octets à partir de cette position et limite la sortie à la première ligne de ces 64 octets.
vous voudrez peut-être ajuster 64 à ce dont vous pensez avoir besoin.