PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ausführen eines programms auf einzelne zeilen in sed?



moedule
19-01-2006, 00:28
hey

ich würde gerne mittels sed ein paar dateien bearbeiten und mir durch sed die entsprechend zu bearbeitenden zeilen raussuchen lassen. diese einzelne zeile würde ich gerne mit einem anderen programm bearbeiten und dann sofort wieder ausgeben lassen

also in etwa so.

bla bla bla alkfzfa afkhafkhfa
blub blub blub
fakkhf bla bla bla fahfahfahfah afhfahfa
blub blub blub

in etwa sollen alle zeilen die bla bla bla enthalten (komplizierter) mit einem program bearbeitet werden und insgesammt soll folgende ausgabe dabei rauskommen

ausgabe_des_programms(bla bla bla alkfzfa afkhafkhfa)
blub blub blub
ausgabe_des_programms(fakkhf bla bla bla fahfahfahfah afhfahfa)
blub blub blub


ist sowasmöglich? bzw hab ich es überhaupt vernünftig geschilder?

moe

Joghurt
19-01-2006, 03:08
#!/bin/sh
while read line; do
if ! echo $line | grep -v "bla bla bla"; then
Programm $line
# oder echo $line | Programm
fi
done < eingabefile > ausgabefile
Wichtig ist das -v, das grep dazu bringt, die Zeile auszugeben, wenn sie nicht passt.
Wenn sie passt, gibt grep nichts aus und false zurück, welches dann wegen dem not (!) dazu führt, dass die then-Bedingung ausgeführt wird.

moedule
20-01-2006, 01:16
ja, klingt brauchbar...

ich habs jetzt anders gelöst und ein perl script geschrieben mit dem ich zum einen die regexp auf die zeilen anwenden kann und zum anderen die entsprechenden funktionen mehr oder weniger leicht nachbilden kann
moe