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

FreeBSD Manual Pages


home | help
BBE(1)									BBE(1)

       bbe - binary block editor

       bbe [options]...

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

       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.

	      String start starts M bytes long block.

	      String start starts the block and	block ends to string stop.

	      String start starts the block and	block will  end	 at  next  oc-
	      curence of start.	Only the first start is	included to the	block.

	      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	to block. Nonprintable charac-
       ters 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 oc-
       tal (0n)	value.

       bbe has two type	of commands: block and byte commands, both are allways
       related	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. Af-
	      fects 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 Hexadec-
	      imal, Decimal, Octal, Asciii and Binary.

	      Replace all occurrences of search	with replace.

	      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 in-
	      stead of m, then all bytes starting from n are deleted.

       c from to
	      Convert bytes from format	from to	to. Currently  supported  for-
	      mats 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

       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 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 re-
	      placed 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 visi-
       ble 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.

       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	start-
	      ing  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.


       Timo Savinen <>

				  2006-11-02				BBE(1)


Want to link to this manual page? Use this URL:

home | help