Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Contact Us
Online Help
Domain Status
Man Pages

Virtual Servers

Topology Map

Server Agreement
Year 2038

USA Flag



Man Pages

Manual Reference Pages  -  BBE (1)


bbe - binary block editor


     Byte commands


bbe [options]...


bbe is a sed-like editor for binary files. It performs binary transformations 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 occurence 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 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.


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. 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, 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 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 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.


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.




Timo Savinen <>
Search for    or go to Top of page |  Section 1 |  Main Index

BBE (1) 2006-11-02

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.