On Fri, May 30, 2008 at 9:33 AM, Craig White craigwhite@azapple.com wrote:
Looking to change a yml file (yaml is a database type file)
*** from --- !ruby/object:Right attributes: name: Personnel Admin action: index id: "1" controller: assessments --- !ruby/object:Right attributes: name: Personnel Admin action: find id: "2" controller: assessments
*** to --- !ruby/object:Right attributes_1: name: Personnel Admin action: index id: "1" controller: assessments --- !ruby/object:Right attributes_2: name: Personnel Admin action: find id: "2" controller: assessments
where I'm taking the 'id:' field from each record and inserting an underscore and the id into the 'attributes' label directly above.
Any takers?
Sed is not a good candidate for this, although you might be able to do it with some seriously twisted script. Sed is a stream editor - its commands are applied to every line it sees.
Awk is a much better candidate for this - you could write a not terribly difficult script to cache the lines up to the id, modify the attributes line and spit out the whole batch. As for writing it for you, I strongly urge you to read the man page and see if you can't do one yourself. It will be worth the effort in future endeavors.
Once I taught myself how to write in awk, I found 1) reading it in other people's scripts was a WHALE of a lot easier and 2) it wasn't that hard to write anything from simple ones to really complicated ones.
However, really complicated awk scripts are of limited use IMNSHO because a really complicated pattern transformation that needs to be executed a lot is better implemented in a program (i.e., C, C++ or whatever) or a more advanced scripting language like Perl (or Python, which I've yet to use).
You could even do this in a shell script....
mhr