Старайтесь не указывать полный путь при указании пути к каталогу, используйте относительный путь, так будет проще при восстановлении.
Начнем с вашегоconfig.src
:
$ cat config.src
00: 42 ; byte 0 is 0x42 / d
01: 52 ; byte 1 is 0x52 / r
02: 62 ; byte 2 is 0x62 / D
03: 72 ; byte 3 is 0x72 / R
07: 1f ; bytes 03..0e are implicitly 00, byte 0f is 0x1f
Преобразование в config.bin
, комментарии пропускаются-c1
:
$ xxd -r -c1 config.src config.bin
$ xxd config.bin
00000000: 4252 6272 0000 001f BRbr....
Конвертировать обратно в формат config.src
:
$ xxd -c1 config.bin # this is unmodified
00000000: 42 B
00000001: 52 R
00000002: 62 b
00000003: 72 r
00000004: 00 .
00000005: 00 .
00000006: 00 .
00000007: 1f .
$ xxd -c1 config.bin | awk -F '' '
{
$0=substr($0, 7) # remove 6 leading characters
$0=substr($0, 1, 6) # remove ASCII output
}
/00$/{ next } # skip hex 00
{ print $0 " ; " } # print line and empty comment
'
00: 42 ;
01: 52 ;
02: 62 ;
03: 72 ;
07: 1f ;
Вы можете попробовать функцию Perl pack
.
Пр. дано
$ cat config.src
00: 42 ; byte 0 is 0x42 / d
01: 52 ; byte 1 is 0x52 / r
02: 62 ; byte 2 is 0x62 / D
03: 72 ; byte 3 is 0x72 / R
07: 1f ; bytes 03..0e are implicitly 00, byte 0f is 0x1f
, затем
$ perl -ne 'm/(\d+): ([[:xdigit:]]{2})/; while($n++ < $1){print pack("x")}; print pack("H*",$2)' config.src | xxd -c1
00000000: 42 B
00000001: 52 R
00000002: 62 b
00000003: 72 r
00000004: 00 .
00000005: 00 .
00000006: 00 .
00000007: 1f .