Provided by: bbe_0.2.2-3_amd64 bug

NAME

       bbe - binary block editor

SYNOPSIS

       bbe [options]...

DESCRIPTION

       bbe  is  a  sed-like  editor  for binary files. It performs binary transformations on the blocks of input
       stream.

OPTIONS

       bbe accepts the following options:

       -b, --block=BLOCK
              Block definition.

       -e, --expression=COMMAND
              Add the COMMAND to the commands to be executed.

       -f, --file=script-file
              Add the contents of script-file to commands.

       -o, --output=name
              Write output to name instead of standard output.

       -s, --suppress
              Suppress normal output, print only block contents.

       -?, --help
              List all available options and their meanings.

       -V, --version
              Show version of program.

       BLOCK can be defined as:

       N:M    Where N'th byte starts a M bytes long block (first byte is 0).

       :M     Block length in input stream is M.

       /start/:M
              String start starts M bytes long block.

       /start/:/stop/
              String start starts the block and block ends at string stop.

       /start/:
              String start starts the block and block will end at next occurrence of start. Only the first start
              is included to the block.

       :/stop/
              Block  starts  at  the beginning of input stream (or at the end of previous block) and ends at the
              next occurrence of stop. String stop will be included to the block.

       Special value '$' of M means the end of stream.

       Default value for block is 0:$, meaning the whole input stream.

       Both start and stop strings are included in block. Nonprintable characters can be escaped as

       \nnn   decimal

       \xnn   hexadecimal

       \0nnn  octal

       Character '\' can be escaped as '\\'. Escape codes '\a','\b','\t','\n','\v','\f','\r' and '\;'  can  also
       be used.

       Length (N and M) can be defined as a decimal (n), a hexadecimal (xn) or an octal (0n) value.

COMMAND SYNOPSIS

       bbe  has  two  type  of commands: block and byte commands, both are always related to current block. That
       means that the input stream outside of the blocks remains untouched.

   Block commands
       D [n]  Delete the n'th block. Without n, all found blocks are deleted from the output stream.

       I string
              Insert the string string before the block.

       A string
              Append the string string at the end of block.

       J n    Skip n blocks, before executing commands after this command.

       L n    Leave all blocks unmodified starting from  block  number  n.  Affects  only  commands  after  this
              command.

       N      Before printing a block, the file name in which the block starts is printed.

       F f    Before  printing a block, the input stream offset at the beginning of the block is printed.  f can
              be H, D or O for Hexadecimal, Decimal or Octal format of offset.

       B f    Before printing a block, the block number is printed (first block == 1) f can be H,  D  or  O  for
              Hexadecimal, Decimal or Octal format of block number.

       > file Before printing a block, the contents of file file are printed.

       < file After printing a block, the contents of file file are printed.

   Byte commands
       n in byte commands is the offset from the beginning of current block (starts from zero).

       r n string
              Replace bytes starting at position n with string string.

       i n string
              Insert string starting at position n.

       p format
              The  contents  of block is printed in format defined by format. format can have any of the formats
              H, D, O, A and B for Hexadecimal, Decimal, Octal, Ascii and Binary.

       s/search/replace/
              Replace all occurrences of search with replace.

       y/source/dest/
              Translate bytes in source to the corresponding bytes in dest. Source and dest  must  be  the  same
              length.

       d n m|*
              Delete  m  bytes starting from the offset n. If * is defined instead of m, then all bytes starting
              from n are deleted.

       c from to
              Convert bytes from format from to to. Currently supported formats are:

              BCD Binary coded decimal

              ASC Ascii

       j n    Commands after the j-command are ignored for first n bytes of the block.

       l n    Commands after the l-command are ignored from n'th byte of the block.

       w file Write bytes from the current block to file file. Commands  before  w-command  have  what  will  be
              written.  %B  or  %nB in  file will be replaced by current block number. n in %nB is field length,
              leading zero in n causes the block number to be left padded with zeroes.

       & c    Performs binary and with c.

       | c    Performs binary or with c.

       ^ c    Performs binary xor with c.

       ~      Performs binary negation.

       u n c  All bytes from start of the block to offset n are replaced by c.

       f n c  All bytes starting from offset n to end of the block are replaced by c.

       x      Exchange the contents of nibbles (half an octet) of bytes.

       Nonvisible characters in strings can be escaped same way as in block definition strings. Character '/' in
       s and y commands can be any visible character.

       Note  that  the  D,  A,  I, F, B, c, s, i, y, p, <, > and d commands cause the length of input and output
       streams to be different.

EXAMPLES

       bbe -e "s/c:\\temp\\data1.txt/c:\\temp\\data2.txt/" file1
              all occurrences of "c:\temp\data1.txt" in file file1 are changed to "c:\temp\data2.txt"

       bbe -b 0420:16 -e "r 4 \x12\x4a" file1
              Two bytes starting at fifth byte of a 16 byte long block starting at offset 0420 (octal) in  file1
              are changed to hexadecimal values 12 and 4a.

       bbe -b :16 -e "A \x0a" file1
              Newline is added after every block, block length is 16.

SEE ALSO

       sed(1).

AUTHOR

       Timo Savinen <tjsa@iki.fi >

                                                   2006-11-02                                             BBE(1)