GNU/Linux >> Tutoriels Linux >  >> Linux

Est-il possible dans Bash de commencer à lire un fichier à partir d'un décalage arbitraire du nombre d'octets ?

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.


Linux
  1. Fichier équivalent ".bashrc" lu par tous les shells ?

  2. Comment lire une variable à partir d'un fichier ?

  3. Obtenir le nombre de descripteurs de fichiers actuellement utilisés à partir du code C

  4. Script bash pour supprimer le fichier le plus ancien d'un dossier

  5. bash + lire les variables et les valeurs du fichier par le script bash

Comment lire des fichiers ligne par ligne dans Bash

Comment lire un fichier ligne par ligne dans Bash

Script bash :comment lire des données à partir de fichiers texte

Lecture d'un fichier en assembleur

Supprimer une certaine ligne du fichier historique de Bash

Obtenir l'emplacement de la ville à partir des adresses IP dans un fichier