Radare can manipulate the file in multiple ways. You can resize the file, move bytes, copy/paste them, insert mode (shifting data to the end of the block or file) or just overwrite some bytes with an address, the contents of a file, a widestring or inline assembling an opcode.
To resize. Use the 'r' command which accepts a numeric argument. Possitive valule sets the new size to the file. A negative one will strip N bytes from the current seek down-sizing the file.
> r 1024 ; resize the file to 1024 bytes
> r -10 @ 33 ; strip 10 bytes at offset 33
To write bytes just use the 'w' command. It accepts multiple input formats like inline assembling, endian-friendly dwords, files, hexpair files, wide strings:
[0x4A13B8C0]> w?
Usage: w[?|*] [argument]
w [string] ; write plain with escaped chars string
wa [opcode] ; write assembly using asm.arch and rasm
wA '[opcode]' ; write assembly using asm.arch and rsc asm
wb [hexpair] ; circulary fill the block with these bytes
wv [expr] ; writes 4-8 byte value of expr (use cfg.bigendian)
ww [string] ; write wide chars (interlace 00s in string)
wf [file] ; write contents of file at current seek
wF [hexfile] ; write hexpair contents of file
wo[xrlaAsmd] [hex] ; operates with hexpairs xor,shiftright,left,add,sub,mul,div
Some examples:
> wx 12 34 56 @ 0x8048300
> wv 0x8048123 @ 0x8049100
> wa jmp 0x8048320
All write changes are recorded and can be listed or undo-ed using the 'u' command which is explained in the 'undo/redo' section.