Linux 命令从文件中检索字节范围

Linux 命令从文件中检索字节范围

我知道这一点,head并且tail可以-c选择指定字节偏移量。我正在寻找一种从大型日志文件中高效提取字节范围的方法。

答案1

Unix 命令的 DareDevildd来救援!

dd if=yourfile ibs=1 skip=200 count=100

这将从字节 200 开始并显示接下来的 100 个字节,换句话说,字节 200-300。这ibs意味着 dd 每次只读取一个字节,而不是默认的 512 个字节,但仍然以默认的 512 字节块写出。去看看这是否ibs会损害性能,我希望不会。

答案2

如果您对字节感兴趣,那么会od更感兴趣。

-j, --skip-bytes=bytes
-N, --read-bytes=bytes

因此要读取从字节 1024 开始的 16 个字节,并以 ascii 格式输出

od -j 1024 -N 16 -a /bin/sh

答案3

您可以使用dd if=logfile of=pieceoflogfile skip=startingblock count=#ofblocks(可能使用 来bs=1获取一字节块,否则它将使用 512 字节块)。不过,不确定告诉它一次写入一个字节的效率如何。

答案4

我知道这已经过时了,并要求在标题中使用“linux”命令,但 python 非常适合这个,并且大多数 linux 发行版都附带了它。它就像这样简单:

python -c 'f=open("myfile.txt","rb");f.seek(100);print(f.read(100));f.close()' | SomeOtherProgram

f.seek(n,0)从程序开始处开始 n 个字节,并f.read(n)读取您想要的字节数。

我还没有找到任何其他可以让事情变得如此简单的选项。

相关内容