Mam obraz dysku 30 GB zepsutej partycji (pomyśl dd if=/dev/sda1 of=diskimage
), z którego muszę odzyskać niektóre pliki tekstowe. Narzędzia do rzeźbienia danych, takie jak foremost
tylko pliki z dobrze zdefiniowanymi nagłówkami, tj. Nie zwykłe pliki tekstowe, spoczęły na moim dobrym przyjacielu strings
.
strings diskimage > diskstrings.txt
stworzyłem plik tekstowy 3 GB zawierający wiązkę ciągów, głównie niepotrzebnych rzeczy, zmieszany z tekstem, którego tak naprawdę chcę.
Większość cruft to naprawdę długie, nieprzerwane ciągi bełkotu. Rzeczy, które mnie interesują, mają na pewno mniej niż 16 KB, więc zamierzam filtrować plik według długości linii. Oto skrypt Pythona, którego używam do tego:
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()
Działa to, ale do wglądu w przyszłości: Czy są jakieś magiczne inkantacje jednowierszowe (pomyśl awk
, sed
), które filtrowałyby plik według długości linii?