[conspire] vim vs sed awk and grep + interactive vs automation [was Re: Slice of life]

Tony Godshall tony at of.net
Tue Sep 22 13:12:24 PDT 2009


> Quoting Tony Godshall (tony at of.net):
>
>> I was just going to say...
>>
>> Try translating this into sed:
>>   perl -i -pe 's{/usr/local/bin/python}{/usr/bin/python2.4}' /usr/local/bin/*.py
>>
>> But then I looked at a sed manual and saw you can do:
>>
>>   s_/usr/local/bin/python_/usr/bin/python2.4_
>
> You know something?  I'd seen that trick a few times, but kind of
> ignored it.  The first time I found myself writing fugliness like
>
>   sed -e 's/\/usr\/local\/bin\/'d foo
>
> ...I had the same reaction as yours of "Sod this for a lark, mate", except
> that my own sidestep was to "awk -F/", rather than switching to Perl.

You use awk instead of sed for replacement?  I've never done that.
Example for the peanut gallery please?

> Anyway, thank you for reminding me that "/" is merely sed's _usual_
> field delimiter, such that one can specify anything else through the
> simple expedient of putting any such something-else after the "s".  More
> at:
>
> http://www.grymoire.com/Unix/Sed.html#uh-2
>
> Also worth mentioning:  The referenced tutorial suffers the usual old-Unix
> brain damage of sticking to
>
>    sed 's[something]' < oldfile > newfile
>
> ...notation.  Which is all nicely 1974 and extremely portable, I'm sure,
> but, frankly, screw that.  GNU sed added inline editing, and practically
> all others have gradually followed suit.  Here in 2009-land, if an
> implementation in front of me still doesn't do "sed -i" (inline), I'm
> prepared to reformat the hard drive on the spot, to fix that problem.

Heh.  There are small embedded linux systems without full sed.  The <
and > syntax works there too.  I've even worked with systems without
cp.  Yup, you cat and redirect.

Tony




More information about the conspire mailing list