我正在尝试从文件中提取一系列字节。文件包含连续的16位样本数据。我认为cut -b应该可以正常工作,但我在数据中出错了。
提取20个字节(10个样本)
cut -b188231561-188231580 file.dat > out.dat
我希望它创建一个包含10个样本的20字节文件(最后一个样本应该是-79)。但是它会创建一个5749bytes的文件,其中包含以下内容(使用od -s显示)
0000000 -69 -87 -75 -68 -83 -94 -68 -67
0000020 -82 -79 2570 2570 2570 2570 2570 2570
0000040 2570 2570 2570 2570 2570 2570 2570 2570
*
0013140 -65 -67 -69 -69 -71 -66 -72 -68
0013160 -69 -80 10
0013165
正如您所看到的,有一大堆重复的2570
值,其中切割应该停止。
我在这里做错了什么?另外,Wikipedia article on cut表示-b
限制为1023字节行。虽然剪切手册似乎没有提到这个限制。
是否有更好的bash命令从二进制文件中提取字节N-M?我已经编写了一个Perl脚本来完成它。我只是好奇。
答案 0 :(得分:1)
cut -b
用于从每一行获取某些字节,它不能用于从整个文件中获取字节。
您可以使用头/尾代替:
N=120
M=143
tail -c +$N file | head -c $((M-N))