Réponses:
Le DareDevil des commandes Unix, ddà la rescousse!
dd if=yourfile ibs=1 skip=200 count=100
Cela commencerait par l'octet 200 et afficherait les 100 octets suivants, ou en d'autres termes, les octets 200-300. ibssignifie que dd ne lit qu'un octet à la fois au lieu des 512 octets par défaut, mais écrit toujours en blocs de 512 octets par défaut. Allez voir si cela ibsnuit à la performance, j'espère que non.
Vous pouvez utiliser dd if=logfile of=pieceoflogfile skip=startingblock count=#ofblocks(éventuellement avec bs=1pour obtenir des blocs d'un octet, sinon il utilise des blocs de 512 octets). Je ne sais pas à quel point il est efficace de lui dire d'écrire un octet à la fois.
ddpeuvent être enchaînés ensemble (le 1er pourrait couper le gros morceau et le 2e ferait du bon travail sur le tuyau, pas le disque), mais ddnon seulement bsmais séparé ibset obsaussi, donc à il pourrait au moins produire des blocs plus gros que la lecture.
En supposant que le fichier n'est pas excessivement volumineux (par exemple plusieurs Go ou plus), le piping de l'un à l'autre est aussi efficace que possible, à moins d'écrire votre propre programme pour le faire.
head ... file | tail ...
(Ou l'inverse. Peu importe.)
time dd if=file.txt | wc -l= 00: 00: 03s.time dd if=file.txt ibs=1 count=782090815 | wc -l= 9:05:19