[CentOS] Help using ed [OT]

Sun Aug 31 17:45:32 UTC 2008
Thomas Johansson <thomasj at isy.liu.se>

Hi

Perhaps omeone might answer this tricky problem. I can do this other 
ways, but i really want to understand how to solve it using ed. I have 
one solution using g/re/s/re//txt/ , but I want to understand how or if 
i can solve it using the ed (.)a command.

A script i have parse several files and append text after a specific 
text is matched. If one file do not have this text, i get a no match and 
the script terminates. How can I avoid this behavior keeping the 
original coding style for ed and append text. I have tried tried but 
still cannot get it correct using (.)a. Is it even possible to do it 
that way using the (.)a command?

Thanks in advance
Thomas


code example that give a "no match". Fairly easy to read and understand

example 1:
-----------
for RFILE in $RLIST; do
ed - RFILE <<- EOF
     H
     /\[matching_text_1\]/a
     This is the appended textline(s) for text1
     .
     /\[matching_text_2\]/a
     This is the appended textline(s) for text2
     .
     w
     q
EOF
done

Another example that solve the above problem. But this example become 
very easy unreadable if the appended text is long and/or includes 
linebreaks.

Example 2:
----------
for RFILE in $RLIST; do
ed - $RFILE << EOF
     g/text1/s//text1\\
     appended_text1/g
     g/text2/s//text2\\
     appended_text2/g
     w
EOF
done