У мене є 30-футовий диск із зображенням захищеного розділу (думаю dd if=/dev/sda1 of=diskimage
), з якого мені потрібно відновити деякі текстові файли. Інструменти для різьблення даних, як-от, foremost
працюють лише у файлах із чітко визначеними заголовками, тобто не просто текстовими файлами, тому я повернувся до свого доброго друга strings
.
strings diskimage > diskstrings.txt
створив текстовий файл 3 Гб, що містить купу рядків, здебільшого марних речей, змішаних із текстом, який я насправді хочу.
Більшість суглобів мають тенденцію бути справді довгими, нерозривними струнами гнучкості. Мене, що мене цікавить, гарантовано менше 16 Кбіт, тому я збираюсь фільтрувати файл за довжиною рядка. Ось сценарій Python, який я використовую для цього:
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()
Це працює, але для довідки в майбутньому: Чи є магічна однолінійних змови (думає awk
, sed
) , який буде фільтрувати файл по довжині лінії?