我知道, head和tail可以采取-c选项来指定一个字节偏移量。 我正在寻找一种方法来有效地从一个大的日志文件中提取一个字节范围。
Unix的命令的DareDevil, dd救援!
dd if=yourfile ibs=1 skip=200 count=100
这将从字节200开始并显示100个下一个字节,或者换句话说,字节200-300。 ibs表示dd一次只读取一个字节而不是默认的512字节,但仍然以默认的512字节块写入。 去看看ibs损害了演出,我希望不会。
你可以使用dd if=logfile of=pieceoflogfile skip=startingblock count=#ofblocks (可能用bs=1来获取单字节块,否则使用512字节块)。 但是,不知道它是如何有效地告诉它一次写一个字节。
如果你的兴趣是在字节,将更有趣。
-j, --skip-bytes=bytes -N, --read-bytes=bytes
所以要读取从字节1024开始的16个字节,并以ascii输出
od -j 1024 -N 16 -a /bin/sh
假设文件不是特别大(例如几GB),从一个到另一个的pipe道效率就像你将要获得的一样高效,而不是编写你自己的程序来完成。
head ... file | tail ...
(或者反过来,无论哪一个)