editing a binary file

Nick Barnes Nick.Barnes at pobox.com
Fri Dec 18 16:38:22 UTC 2009


At 2009-12-18 16:33:49+0000, Warren Block writes:
> perryh at pluto.rain.com wrote:
> > Greg Larkin <glarkin at freebsd.org> wrote:
> > > ...
> > > > truncate -4 myfile should get rid of the last four bytes.  Maybe
> > > > there's a similar efficient way to truncate the start of a file.
> > >
> > > This should do it:
> > >
> > > dd if=oldfile of=newfile bs=1 skip=4
> > 
> > Or, perhaps marginally more efficient:
> > 
> > dd if=oldfile of=newfile bs=4 skip=1
> 
> It would be nice to avoid the file copy, but maybe there's no way to do 
> that.  The small buffer size for dd will probably make copies of 
> multi-gig files slow.  This might be faster:
> 
> tail -c +5 myfile > outfile
> truncate -4 outfile
> 
> (Has anyone mentioned that you can edit binary files interactively with 
> vi yet?  No?  Well, it's horrific and surely has interesting failure 
> modes.  And there are probably disadvantages also.)

All very interesting, but the OP is wanting to lose all the Fortran
record markers, not just the first (and last) four bytes of the file.
The record markers precede and follow each record, and give the
record's length.  The size and enddian-ness of the record marker
itself depends on the Fortran implementation.

Nick B


More information about the freebsd-questions mailing list