[TAG] 2c tip: filtering in-place

Ben Okopnik ben at callahans.org
Fri Mar 19 18:39:34 MSK 2004


On Fri, Mar 19, 2004 at 02:33:21PM +0530, Kapil Hari Paranjape wrote:
> Hello,
> 
> I have always thought that filtering files "in-place" was
> not possible from the command line...
> ...until today---one lives and learns.
> 
>   dd if=file bs=4k | filter | dd of=file bs=4k conv=notrunc
> 
> Where "file" is the file you want to filter and "filter" 
> is the filtering program you want to apply.

The "buffer" program does exactly the same as the above; the process is
called "reblocking".

buffer < foo | filter > foo

If the file is bigger than 1MB, you'll need to specify a larger queue
with the "-m" option, but that's usually not an issue.

Conversely, as Thomas mentioned, you could use Perl's, etc. "in-place
edit" switch:

# rot13
perl -i -wpe'y/a-zA-Z/n-za-mN-ZA-M/' file

# lc everything
perl -i -wpe'$_=lc' file


* Ben Okopnik * okopnik.freeshell.org * Technical Editor, Linux Gazette *
-=-=-=-=-=o0o=-=-=-=-= <http://linuxgazette.net/> =-=-=-=-=o0o=-=-=-=-=-




More information about the TAG mailing list