Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
BBE(1)									  BBE(1)

NAME
     bbe - binary block editor

SYNOPSIS
     bbe [options]...

DESCRIPTION
     bbe  is  a sed-like editor for binary files. It performs binary transforma-
     tions 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 contest 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 to string stop.

     /start/:
	    String start starts the block and block will end at  next  occurence
	    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 pre-
	    vious  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 to 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 decimal (n), hexadecimal (xn)  or  octal
     (0n) value.

COMMAND SYNOPSIS
     bbe has two type of commands: block and byte commands, both are allways re-
     lated  to	current block. That means that the input stream outside of block
     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 begining 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 is printed.

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

   Byte commands
     n in byte commands is 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, Deci-
	    mal, Octal, Asciii 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 have equal 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  effect  to 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 ze-
	    roes.

     & 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 defin-
     ition strings. Character '/' in s and y commands can be any visible charac-
     ter.

     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 occurences 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)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=bbe&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help