Saya tahu itu head
dan tail
dapat mengambil -c
opsi untuk menentukan byte offset. Saya mencari cara untuk secara efisien mengekstrak rentang byte dari file log besar.
15
Saya tahu itu head
dan tail
dapat mengambil -c
opsi untuk menentukan byte offset. Saya mencari cara untuk secara efisien mengekstrak rentang byte dari file log besar.
The DareDevil dari perintah Unix, dd
untuk menyelamatkan!
dd if=yourfile ibs=1 skip=200 count=100
Itu akan mulai dari byte 200 dan menampilkan 100 byte berikutnya, atau dengan kata lain, byte 200-300. ibs
berarti dd hanya membaca satu byte pada suatu waktu alih-alih 512 byte default, tetapi masih menulis dalam potongan 512 byte default. Pergi dan lihat apakah ibs
merusak kinerja, saya harap tidak.
time dd if=file.txt | wc -l
= 00: 00: 03s.time dd if=file.txt ibs=1 count=782090815 | wc -l
= 9:05:19Jika minat Anda dalam byte, akan
od
lebih menarik.Jadi untuk membaca 16 byte mulai dari byte 1024, dan output dalam ascii
sumber
Anda dapat menggunakan
dd if=logfile of=pieceoflogfile skip=startingblock count=#ofblocks
(mungkin denganbs=1
untuk mendapatkan blok satu byte, jika tidak menggunakan blok 512 byte). Tidak yakin seberapa efisien untuk mengatakannya untuk menulis satu byte pada suatu waktu.sumber
dd
's dapat pipa-dirantai bersama-sama (1 mungkin memotong sepotong lemak dan ke-2 akan melakukan pekerjaan baik atas pipa, tidak disk), tetapidd
tidak hanyabs
tetapi terpisahibs
danobs
juga, jadi pada Setidaknya itu bisa dihasilkan dengan blok yang lebih besar daripada membaca.Dengan asumsi file tersebut tidak terlalu besar (misalnya beberapa GB atau lebih), pipa dari satu ke yang berikutnya seefisien yang Anda dapatkan, singkat menulis program Anda sendiri untuk melakukannya.
(Atau sebaliknya. Mana pun.)
sumber