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. ibs
signifie 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 ibs
nuit à la performance, j'espère que non.
Vous pouvez utiliser dd if=logfile of=pieceoflogfile skip=startingblock count=#ofblocks
(éventuellement avec bs=1
pour 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.
dd
peuvent ê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 dd
non seulement bs
mais séparé ibs
et obs
aussi, 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