我有一个二进制文件,我使用hexdump和一些awk和sed命令将其转换为常规文件。输出文件看起来像这样 -
$cat temp
3d3d01f87347545002f1d5b2be4ee4d700010100018000cc57e5820000000000000000000
000000087d3f513000000000000000000000000000000000001001001010f000000000026
58783100b354c52658783100b43d3d0000ad6413400103231665f301010b9130194899f2f
fffffffffff02007c00dc015800a040402802f1d5b2b8ca5674504f433031000000000004
6363070000000000000000000000000065450000b4fb6b4000393d3d1116cdcc57e58287d
3f55285a1084b
这个临时文件有一些不太常见的标记(3d3d),它们代表着新的二进制记录的开始。我需要根据这些标记将文件分割成多个部分。
我的期望输出是基于这些标记分割后的多个文件(文件数量与临时文件中的标记数相同)。
因此,我的输出应该类似于这样 -
$cat temp1
3d3d01f87347545002f1d5b2be4ee4d700010100018000cc57e582000000000000000
0000000000087d3f513000000000000000000000000000000000001001001010f00000000
002658783100b354c52658783100b4
$cat temp2
3d3d0000ad6413400103231665f301010b9130194899f2ffffffffffff02007c00dc0
15800a040402802f1d5b2b8ca5674504f4330310000000000046363070000000000000000
000000000065450000b4fb6b400039
$cat temp3
3d3d1116cdcc57e58287d3f55285a1084b
cat
。如果输入只有一行,你只会得到第一条记录。输出也会缺少原始的RS
。echo '3d3dsomething3d3danything' | awk 'BEGIN {RS="3d3d"} {print}'
只会输出something
。 - Zsolt BotykaiRS
。(还有无用的使用cat
。) - Zsolt Botykaicat temp
代表在awk阶段之前进行的任何转换,同时避免在已经很长的awk命令行中再添加更多内容。 - Michael J. BarberRS
部分的问题。关于cat
,你可能想阅读这篇文章:http://partmaps.org/era/unix/award.html和这篇文章:http://en.wikipedia.org/wiki/Cat_(Unix)#Useless_use_of_cat - Zsolt Botykai