Több soros előfordulás keresése, és plusz sor beszúrása kötött segédeszközökkel

Sziasztok!

Init szkriptben kéne megkeressek egy több soros előfordulást, és közé kellene beszúrnom még egy plusz sort. Sajnos a sed az nem használható önmagában erre, mert az ugyebár egyszerre csak 1 sort tud feldolgozni (javítsatok ki ha tévednék).

Nekem meg ilyesmi patternt kéne megkeresnem:


iptables -N OUTS -d $NET_ADDR -j ACCEPT
}
}

Majd pedig az iptables kezdetű sor után, a két utolsó kapcsos zárójel elé, be kéne szúrnom még egy plusz sort.

A másik probléma az, hogy ezt OpenWRT-t futtató routereken kéne megtegyem. Pulsz csomag feltelepítése kizárt (egyéb okokból), a rendelkezésre álló előre feltelepített parancsok az alábbiak:

sh
grep
sed
awk

Tehát ezek valamelyikével, vagy ezek kombinációjával kéne megoldani. Az AWK mintha tudna több sorral is dolgozni valamilyen trükkös módon, de nekem nem sikerült megtalálnom sehol sem, hogy hogyan.

Tudna valaki segíteni?

Hozzászólások

Nézd meg az awk "next" illetve "getline" utasításait.
Pl. valami ilyesmi simán megy (nem vagyok biztos a szintaxisban, az elv a lényeg: ha találsz megfelelő sort, akkor mész a következőre...):

if ($0 ~ /iptables/) {
VALTOZO=1
next
}
if (VALTOZO == 1) and ($0 ~ '}') {
print $0
print UJSOR
VALTOZO=0
}

vagy a getline verzió:

if ($0 ~ /iptables/) {
getline
if ($0 ~ '}') {
print $0
print UJSOR
}
}
----------------------------
"Még jó, hogy nem szeretem a finomfőzeléket. Mert ha szeretném, meg kellene ennem. Pedig nem szeretem."

Mivel minden sort feldolgoz az awk, ezért csak kell egy print $0 még valahova (else ág, vagy új if{} az első példában, illetve a második példánál kell egy next még a belső if-be, és a végére a print $0).
(Meg most látom, hogy minkét példában az első if-nél kimaradt egy-egy print $0)
Persze lehet, hogy az egész még finomításra szorul, mert valahol valami szemantikai hiba van. :)

----------------------------
"Még jó, hogy nem szeretem a finomfőzeléket. Mert ha szeretném, meg kellene ennem. Pedig nem szeretem."