Tobi: sed: Zeile ersetzen

Hi,

würde gerne in einer Datei jede Zeile, die foo enthält (-> d.h. z.B. foo, foo123 usw.) durch die Zeile bar ersetzen.
Dazu versuchte ich es mit
sed -e '/^foo/s/^.*/bar/' default.action
u.ä.
aber leider ohne Erfolg.
Könnt ihr mir bitte verraten, was falsch ist daran?

Danke, guten Rutsch

  1. gudn tach Tobi!

    würde gerne in einer Datei jede Zeile, die foo enthält (-> d.h. z.B. foo, foo123 usw.) durch die Zeile bar ersetzen.
    Dazu versuchte ich es mit
    sed -e '/^foo/s/^.*/bar/' default.action

    ersetzen geht mit s///.
    du willst aber ausserdem eine in-place-ersetzung durchfuehren. das kann afaik nicht jede sed-version. musst mal schauen, ob der parameter -i existiert. falls nicht, nimm einfach perl.

    sed -i -e 's/^.*foo.*/bar/' file
    perl -pi -e 's/^.*foo.*/bar/' file

    falls du mehrere dateien ggf. rekursiv bearbeiten willst, kannst du das entweder ueber eine schleife (stichwort "for") bewerkstelligen oder mittels "find" oder ueber tools wie dem in perl geschriebenen textre.

    prost
    seth