Ho un'immagine del disco da 30 GB di una partizione borked (pensa dd if=/dev/sda1 of=diskimage
) da cui ho bisogno di recuperare alcuni file di testo. Strumenti di intaglio dei dati come foremost
funzionano solo su file con intestazioni ben definite, cioè non file di testo semplice, quindi sono tornato sul mio buon amico strings
.
strings diskimage > diskstrings.txt
prodotto un file di testo da 3 GB contenente un sacco di stringhe, per lo più cose inutili, mescolate con il testo che in realtà voglio.
La maggior parte dell'innesto tende ad essere stringhe davvero lunghe e ininterrotte di incomprensioni. Le cose che mi interessano sono garantite per essere inferiori a 16kb, quindi ho intenzione di filtrare il file per lunghezza della linea. Ecco lo script Python che sto usando per farlo:
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()
Funziona, ma per riferimento futuro: ci sono magici incantesimi di una riga (pensa awk
, sed
) che filtrerebbero un file per lunghezza della linea?