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>