Man page - bbe(1)
Packages contains this manual
Manual
BBE
NAMESYNOPSIS
DESCRIPTION
OPTIONS
COMMAND SYNOPSIS
Block commands
Byte commands
EXAMPLES
SEE ALSO
AUTHOR
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 >