Eu sei disso head
e tail
pode -c
optar por especificar um deslocamento de bytes. Estou procurando uma maneira de extrair eficientemente um intervalo de bytes de um arquivo de log grande.
linux
command-line-interface
Ramon
fonte
fonte
time dd if=file.txt | wc -l
= 00: 00: 03s.time dd if=file.txt ibs=1 count=782090815 | wc -l
= 9:05:19Se o seu interesse estiver nos bytes, seria
od
de maior interesse.Então, para ler os 16 bytes a partir do byte 1024, e a saída em ascii
fonte
Você pode usar
dd if=logfile of=pieceoflogfile skip=startingblock count=#ofblocks
(possivelmente combs=1
para obter blocos de um byte, caso contrário, ele usa blocos de 512 bytes). Porém, não tenho certeza de quão eficiente é dizer a ele para escrever um byte de cada vez.fonte
dd
podem ser encadeados (o primeiro pode cortar a peça gorda e o segundo faria um bom trabalho sobre o tubo, não no disco), masdd
não apenasbs
mas separadoibs
eobs
também, por isso, em pelo menos, poderia produzir com blocos maiores que a leitura.Assumindo que o arquivo não seja excessivamente grande (por exemplo, vários GB ou mais), a canalização de um para o outro é a mais eficiente possível, além de escrever seu próprio programa para isso.
(Ou o contrário. Qualquer que seja.)
fonte