Я имею огромный файл журнала приблизительно 3,5 ГБ и хотел бы выбрать случайные разделы посреди, говорят, что 10 МБ в целях отладки, что делает мое приложение.
Я мог использовать команды головы или хвоста для получения начала или конца файла, как я могу захватить произвольную часть с середины файла? Я предполагаю, что мог сделать что-то как head -n 1.75GB | tail -n 10MB
но это кажется неуклюжим, и я должен был бы определить номера строки для средней точки файла для получения 1.75 ГБ и количества строки 10 МБ.
Просто необходимо записать немного программы, чтобы искать на некоторое случайное пятно и считать некоторую сумму строк.
Пример в Python (читает одну строку, но можно изменить его):
def get_random_line():
"""Return a randomly selected line from a file."""
import random
fo = open("/some/file.txt")
try:
point = random.randrange(fo.size)
fo.seek(point)
c = fo.read(1)
while c != '\n' and fo.tell() > 0:
fo.seek(-2, 1)
c = fo.read(1)
line = fo.readline().strip()
finally:
fo.close()
return line