1

I can't find out how to solve this simple problem:

I have an XML file and an an URL as a parameter in the script: $URL.

I need to find the string "NO_CODE" just after the $URL (which could be: http://www.webpage2.com) and replace this string with: CODE_OK.

There is any easy way to do this?

<Row ss:AutoFitHeight="0">
    <Cell ss:StyleID="s65" ss:HRef="http://www.webpage1.com"><Data
      ss:Type="String">Name of the webpage 1</Data></Cell>
    <Cell><Data ss:Type="String">NO_CODE</Data></Cell>
   </Row>
   <Row ss:AutoFitHeight="0">
    <Cell ss:StyleID="s65" ss:HRef="http://www.webpage2.com"><Data
      ss:Type="String">Name of the webpage 2</Data></Cell>
    <Cell><Data ss:Type="String">NO_CODE</Data></Cell>
   </Row>
   <Row ss:AutoFitHeight="0">
    <Cell ss:StyleID="s65" ss:HRef="http://www.webpage3.com"><Data
      ss:Type="String">Name of the webpage 3</Data></Cell>
    <Cell><Data ss:Type="String">NO_CODE</Data></Cell>
   </Row>

Thanks very much.

user3139207
  • 121
  • 13

2 Answers2

0

Through GNU awk and sed,

$ awk -v RS="</Row>" '/http:\/\/www\.webpage2\.com/{sub(/NO_CODE/,"CODE_OK")}1' ORS="</Row>" file | sed '$d'
<Row ss:AutoFitHeight="0">
    <Cell ss:StyleID="s65" ss:HRef="http://www.webpage1.com"><Data
      ss:Type="String">Name of the webpage 1</Data></Cell>
    <Cell><Data ss:Type="String">NO_CODE</Data></Cell>
   </Row>
   <Row ss:AutoFitHeight="0">
    <Cell ss:StyleID="s65" ss:HRef="http://www.webpage2.com"><Data
      ss:Type="String">Name of the webpage 2</Data></Cell>
    <Cell><Data ss:Type="String">CODE_OK</Data></Cell>
   </Row>
   <Row ss:AutoFitHeight="0">
    <Cell ss:StyleID="s65" ss:HRef="http://www.webpage3.com"><Data
      ss:Type="String">Name of the webpage 3</Data></Cell>
    <Cell><Data ss:Type="String">NO_CODE</Data></Cell>
   </Row>
Avinash Raj
  • 172,303
  • 28
  • 230
  • 274
0

Another awk way

awk '/www.webpage2.com/{x=1}x{if(sub(/NO_CODE/,"CODE_OK"))x=0}1' file

with variable

awk -vy="$website" '$0~y{x=1}x{if(sub(/NO_CODE/,"CODE_OK"))x=0}1' file