J'ai une image disque de 30 Go d'une partition borked (pensez dd if=/dev/sda1 of=diskimage
) dont j'ai besoin pour récupérer des fichiers texte. Les outils de gravure de données comme foremost
ne fonctionnent que sur des fichiers avec des en-têtes bien définis, c'est-à-dire pas des fichiers de texte brut, donc je suis tombé sur mon bon ami strings
.
strings diskimage > diskstrings.txt
produit un fichier texte de 3 Go contenant un tas de chaînes, principalement des trucs inutiles, mélangé avec le texte que je veux réellement.
La plus grande partie de la cruauté a tendance à être de très longues chaînes de charabia ininterrompues. Ce qui m'intéresse est garanti de moins de 16 Ko, donc je vais filtrer le fichier par longueur de ligne. Voici le script Python que j'utilise pour le faire:
infile = open ("infile.txt" ,"r");
outfile = open ("outfile.txt","w");
for line in infile:
if len(line) < 16384:
outfile.write(line)
infile.close()
outfile.close()
Cela fonctionne, mais pour référence future: existe-t-il des incantations magiques sur une ligne (pensez awk
-vous sed
) qui filtreraient un fichier par longueur de ligne?