Kar*_*ath 6 unix bash binary-data
我在标准输入上有一个二进制流,它是固定大小的格式,一个连续的数据包流,每个数据包有一个长度为X的头和一个长度为Y的主体.
因此,如果X = 2 Y = 6那么它就像是00abcdef01ghijkl02mnopqr03stuvwx,但它是二进制的,标题和数据都可以包含任何 "字符"(包括'\ 0'和换行符),这个例子只是为了便于阅读.
我想摆脱标题数据,所以输出看起来像这样:abcdefghijklmnopqrstuvwx.
unix工具链中是否有允许我这样做的命令?通常有没有处理二进制数据的工具?我能想到的唯一工具是od/ hexdump但是如何将结果转换回二进制?
使用xxd它往返于十六进制转储。
xxd -c 123 -ps
Run Code Online (Sandbox Code Playgroud)
将输出每行 123 字节的流。反转使用
xxd -r -p
Run Code Online (Sandbox Code Playgroud)
您现在应该能够将其与cut删除字符放在一起,因为您可以执行类似的操作
cut -c 3-
Run Code Online (Sandbox Code Playgroud)
获取从 3 到行尾的所有字符。不要忘记使用等于 2X 的字符数来表示每个字节两个十六进制字符。
所以类似的事情
xxd -c X+Y -ps | cut -c 2X+1- | xxd -r -p
Run Code Online (Sandbox Code Playgroud)
其中X+Y和2X+1被替换为实际数值。您需要将数据流放置在上述命令中适当的位置。