剪切-b不会在预期点停止

时间:2014-10-17 20:10:31

标签: bash cut

我正在尝试从文件中提取一系列字节。文件包含连续的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脚本来完成它。我只是好奇。

1 个答案:

答案 0 :(得分:1)

cut -b用于从每一行获取某些字节,它不能用于从整个文件中获取字节。

您可以使用头/尾代替:

N=120
M=143

tail -c +$N file | head -c $((M-N))