Я знаю это head
и tail
могу использовать -c
опцию для указания байтового смещения. Я ищу способ эффективно извлечь диапазон байтов из большого файла журнала.
15
Я знаю это head
и tail
могу использовать -c
опцию для указания байтового смещения. Я ищу способ эффективно извлечь диапазон байтов из большого файла журнала.
DareDevil команд Unix, dd
на помощь!
dd if=yourfile ibs=1 skip=200 count=100
Это будет начинаться с байта 200 и показывать 100 следующих байтов, или, другими словами, байты 200-300. ibs
означает, что dd читает только один байт за раз вместо 512 байтов по умолчанию, но все еще записывает в 512 байтовых блоках по умолчанию. Пойди и посмотри, ibs
повредит ли это представление, надеюсь, нет.
time dd if=file.txt | wc -l
= 00: 00: 03s.time dd if=file.txt ibs=1 count=782090815 | wc -l
= 9:05:19Если ваш интерес к байтам, будет
od
более интересным.Таким образом, чтобы прочитать 16 байтов, начиная с 1024 байта, и вывести в ascii
источник
Вы можете использовать
dd if=logfile of=pieceoflogfile skip=startingblock count=#ofblocks
(возможно,bs=1
чтобы получить однобайтовые блоки, в противном случае он использует блоки по 512 байт). Не уверен, насколько эффективно сказать ему записывать по одному байту за раз.источник
dd
«s может быть труба приковано вместе (первый может разрезать толстый кусок и второй будет делать хорошую работу над трубой, а не диск), ноdd
имеет не только ,bs
но отдельноibs
иobs
как хорошо, так что в по крайней мере, это может привести к большим блокам, чем чтениеПредполагая, что файл не слишком велик (например, несколько ГБ или около того), конвейерная передача от одного к другому настолько эффективна, насколько это возможно, если не писать собственную программу для этого.
(Или наоборот. В зависимости от того.)
источник