Etaoin Shrdlu <shr...@unlimitedmail.org> [11-02-12 14:36]:
> On Sat, 12 Feb 2011 14:11:20 +0100
> meino.cra...@gmx.de wrote:
> 
> > Alan McKinnon <alan.mckin...@gmail.com> [11-02-12 13:44]:
> > > Apparently, though unproven, at 13:25 on Saturday 12 February 2011, 
> > > meino.cra...@gmx.de did opine thusly:
> > > 
> > > > Hi,
> > > > 
> > > >  I am trying to instruct sed to insert a line of text before
> > > >  a matched line. The whole command should fit into one
> > > >  physical (command) line.
> > > > 
> > > >  Is it possible? And how is it possible?
> > > > 
> > > >  Thank you very much for any hint in advance!
> > > >  Best regards,
> > > >  mcc
> > > 
> > > 
> > > There's nothing special about a line, it's just a bunch of characters
> > > that end with a newline (itself just a character).
> > > 
> > > But you can't insert stuff at arbitrary points, you can only replace
> > > stuff with other stuff. You can replace the start of line marker (^),
> > > so do this:
> > > 
> > > $ cat sed.txt 
> > > 1
> > > 2
> > > $ cat sed.txt | sed -e 's/^/a\n/g'
> > > a
> > > 1
> > > a
> > > 2
> > > 
> > > I replaced "start of line" with "a and a newline". Modify the regex to
> > > suit your needs. This gets awkward though, as you can search with a
> > > regex but only replace a literal. If you need to insert some line
> > > before any line containing say a "z" for example, then that is way
> > > beyond sed's capabilities and you are into awk|perl territory.
> > > 
> > > You didn't clearly state what you are trying to do with examples, so
> > > the above vague wishy-washy goop is the best I can do for you.
> > > 
> > > 
> > > -- 
> > > alan dot mckinnon at gmail dot com
> > > 
> > 
> > Hi,
> > 
> > I update my MakeHuman svn source and the Blender svn source on a daily
> > basis. Currently the Blender folks did a change in the registration
> > code for Blender scripts. The MakeHuman folks provide a script, which
> > is needed to load the putput of MakeHuman into Blender. This script
> > isn't "new registration ready".
> > 
> > I have to do the following the changes to the Makehuman script (a
> > handfull):
> > 
> > change this: =======================================
> > def registration()
> >     <script specific stuff
> > 
> > 
> > def unregistration()
> >     <script specific stuff
> > 
> > into this: =========================================
> > def registration()
> >     bpy.utils.register_module(__name__)
> >     <script specific stuff
> > 
> > 
> > def unregistration()
> >     bpy.utils.unregister_module(__name__)
> >     <script specific stuff
> > 
> 
> So it looks like you have to add a line *after* a match, not before as you
> originally said. Try this then:
> 
> sed '/matchingline/s/$/\ninsertedline/'
> 
> which in your case will likely be something like
> 
> sed '/def registration()/s/$/\nbpy.utils.register_module(__name__)/'
> 
> you can do both insertions in a single sed script, eg
> 
> sed '/def registration()/s/$/\nbpy.utils.register_module(__name__)/
>      /def unregistration()/s/$/\nbpy.utils.unregister_module(__name__)/'
> 
> 
Hi,

thank you for this hint! :)

My first posting was made at a time as I thought only one script
has this issue. For this one script I had matched another line inside
of register(). But all scripts of MakeHuman are affected...so... :)

Anyway...your solution works as a charme and therefor the scripts are
registered with blender again :)

Have a nice weekend!
Best regards,
mcc


Reply via email to