Greetings,

Hey guys, I am trying to make a shell script that will scan for a certain 5 lines of text in a file, modify it by adding two lines in the middle and replacing that section of text in the file.

For example read rc.conf for:
Line1
Line2
Line3
Line4
Line5
That match the exact lines

and replace that section or match with

Line1
Line2
INSERTLINE
Line3
INSERTLINE
Line4
Line5

Mainly i am trying to add a new case statment inside an if loop automatically using a shell script. I have tried reading info on awk usage but cannot find anything that matches whta I am trying to accomplish. Any help would be greatly appreciated.

Regards,

S Tompkins

Recommended Answers

All 3 Replies

Here's one way of approaching your problem (pseduo-code):

while !eof {
   increment fileline

   while (stillgoing) {
      increment index
      read line fileline from file
      if (compare string to one in database = FALSE)
          stillgoing = FALSE
      if (index > 5)
           insert lines in file
   } end while
} end while

Just off the top of my head. Don't take it too literally.

awk works for this pretty well -

awk '{
        print $0
        if($0=="Line2") {print "INSERTLINE2"}
        if($0=="Line3") {print "INSERTLINE3"}
       }' file > newfile
sed '
/Line1/{
N;N;N;N
s/^Line1\nLine2\nLine3\nLine4\nLine5$/Line1\
Line2\
INSERTLINE1\
Line3\
INSERTLINE2\
 Line4\
Line5\
/
}' rc.conf
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.