[ Machiavelli... @ 07.05.2013. 16:16 ] @
Postovanje,

Ovo je one-liner ali ne vredi pokusavah pa reko aj da pitam... Situacija je sledece ovo je output


<b>Status:</b> Pending Schedule <b>Severity:</b> 3<br></td></table>
<table border=1 bordercolor=#ffffff
style=background-color:#E0F2F7

Hocu gde god naidjem na string "3<br>"
Da promenim u drugoj liniji nakog tog match "style=background-color:#E0F2F7" u "style=background-color:#FF0000"

[ uranium @ 07.05.2013. 17:05 ] @
Ako su fajlovi dovoljno mali, možeš da probaš ovako nešto:


perl -i.bak -e '$/=undef; $x=<>; $x =~ s/( 3<br>.*?\n)style=background-color:#E0F2F7/$1style=background-color:#FF0000/gs;print $x' foo.html


to bi trebalo da izvrši traženu izmenu, a originalnu verziju fajla da sačuva u foo.html.bak ( ako ne želiš kopiju, onda stavi samo switch -i ).
[ Machiavelli... @ 07.05.2013. 18:50 ] @
Mislim da bi ovo radilo, ali ja bi da koristim sed ili awk jer imam neki zsh script u koji bi i ovo da inkorporiram. Znam da ovo moze sed da uradi ili awk, stigoh negde ali nesto me jos zeza.
[ Machiavelli... @ 07.05.2013. 19:03 ] @
Evo polako pa sklopih kockice...

awk 'f==1 && /style=background-color:#E0F2F7/{$0="style=background-color:#FF0000";f=0}/3<br>/{f=1}1' ../tickets/index.html

Ovo posle svakog 3<br> ode na prvo sledece E0F2F7 i zameni sa FF0000

[ Machiavelli... @ 07.05.2013. 21:25 ] @
Nazalost ne radi mi ovo awk...
[ pajaja @ 07.05.2013. 22:42 ] @
Pozdrav,

probaj da u sed-u iskoristis n komandu da ucitas drugi red i onda uradis zamenu. Recimo nesto ovako:

Code:
sed '/3<br>/{n;n; s/#E0F2F7/#FF0000/}' fajl.txt


Naravno, u slucaju da imas jos nesto u toj liniji gde se pominje #E0F2F7 a nije background-color izmeni sta je potrebno, ovo je samo primer.
[ uranium @ 07.05.2013. 22:54 ] @
Možeš da probaš i ovako nešto:

sed -i.bak -e '/ 3<br>/,+2 s/style=background-color:#E0F2F7/style=background-color:#FF0000/g' foo.html


jedini potencijalni problem je to što skripta zapravo pokušava da izvrši zamenu na sve 3 linije ( počev od one koja matchuje " 3<br>", završno sa onom koja matchuje "style=background-color:#E0F2F7" ).

[ uranium @ 07.05.2013. 22:56 ] @
U svakom slučaju, odgovor koji je dao pajaja mi se čini boljim rešenjem.
[ Machiavelli... @ 08.05.2013. 13:20 ] @
Probah sed od @pajaja - ne radi

@uranium tvoj script radi ali mi oboji u crveno ispod (sledeci blok) umesto onog sto sam hteo. U ovoj situaciji :

"<td><b>phl7-co-acc-sw12.amazon.com:Unmanaged Switches Check</b><br>
Ticket Number: <a href=http://tt.amazon.com/0021368049>0021368049</a>
<b>Status:</b> Pending Schedule <b>Severity:</b> 3<br></td></table>
<table border=1 bordercolor=#ffffff
style=background-color:#E0F2F7 (umesto ovog)
width=800 cellpadding=3 cellspacing=3>
<td><b>PHL7 UPS at IDF20</b><br>
Ticket Number: <a href=http://tt.amazon.com/0021344918>0021344918</a>
<b>Status:</b> Pending Parts <b>Severity:</b> 5<br></td></table>
<table border=1 bordercolor=#ffffff
style=background-color:#E0F2F7 (promeni mi ovaj)
"

[ Machiavelli... @ 08.05.2013. 13:47 ] @
Ma zaj3ebo sam se... Kod koji oznacava boju tabele je iznad dva polja a ne ispod, zato mi @uranium tvoj script radi ali mi oboji sledece polje...

Code:
<table border=1 bordercolor=#ffffff
      style=background-color:#FFFFFF
  width=800 cellpadding=3 cellspacing=3>
      <td><b>phl7-co-acc-sw12.amazon.com:Unmanaged Switches Check</b><br>
      Ticket Number: <a href=http://tt.amazon.com/0021368049>0021368049</a>
      <b>Status:</b> Pending Schedule <b>Severity:</b> 3<br></td></table>
  <table border=1 bordercolor=#ffffff
      style=background-color:#FF0000
  width=800 cellpadding=3 cellspacing=3>
      <td><b>PHL7 - Check IDFs in construction zone prior to launch of new production configuration. IDF11 and IDF13 through IDF20</b><br>
      Ticket Number: <a href=http://tt.amazon.com/0021337562>0021337562</a>
      <b>Status:</b> Pending Schedule <b>Severity:</b> 5<br></td></table>




Ustvari meni treba da kad nadije na "3<br>" da ode 4 polja nazad i promeni (u ovom slucaju) style=background-color:#FFFFFF u style=background-color:#FF0000

[ uranium @ 08.05.2013. 18:41 ] @
Nemam sad vremena da gledam detaljnije, ali svakako možeš problem da svedeš na prethodni upotrebom tac komande.

tac foo.html | sed -e '/ 3<br>/,+4 s/style=background-color:#E0F2F7/style=background-color:#FF0000/g ' foo.html | tac > foo.html~ && mv foo.html~ foo.html