Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 18 Dec 2009 16:38:16 +0000
From:      Nick Barnes <Nick.Barnes@pobox.com>
To:        Warren Block <wblock@wonkity.com>
Cc:        glarkin@freebsd.org, mexas@bristol.ac.uk, perryh@pluto.rain.com, freebsd-questions@freebsd.org
Subject:   Re: editing a binary file 
Message-ID:  <12053.1261154296@thrush.ravenbrook.com>
In-Reply-To: <alpine.BSF.2.00.0912180904180.11293@lightning.wonkity.com>  from Warren Block <wblock@wonkity.com>  of "Fri, 18 Dec 2009 09:33:49 -0700"

next in thread | previous in thread | raw e-mail | index | archive | help
At 2009-12-18 16:33:49+0000, Warren Block writes:
> perryh@pluto.rain.com wrote:
> > Greg Larkin <glarkin@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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?12053.1261154296>