Hallo,
ich suche in einer Datei einen Ausdruck und eine Zeile nach dem gefunden Ausdruck ersetze ich einen weiteren Ausdruck. Ich möchte einen ExitCode wenn erfolgreich ersetzt wurde.
Testdatei mit folgenden Einträgen:
foo bar zoo
Das schaut gut aus sucht nach foo und ersetzt bar mit bar1 → Return Code 0
1 2 3 4 5 6 | Code sed '/foo/ {n;s/bar/bar1/;t;q1}' sedtest; echo $? foo bar1 zoo 0 |
Das schaut auch gut aus bar wird nicht ersetzt da sdf nicht nach foo gefunden wird → Return Code 1
1 2 3 4 | sed '/foo/ {n;s/sdf/bar1/;t;q1}' sedtest; echo $? foo bar 1 |
Das gibt 0 aus sollte aber 1 ausgeben da bla nicht gefunden wird - wie kann ich das ändern?
1 2 3 4 5 | sed '/bla/ {n;s/bar/bar1/;t;q1}' sedtest; echo $? foo bar zoo 0 |
Ich dachte dass ich das ev. → so
1 | sed '/foo/!{q2}; {n;s/bar/bar1/;t;q1}' sedtest; echo $? |
abfangen kann, aber das gibt immer 2 aus? Wie kann ich das erste suchen auch abfangen? Das funktioniert auch so
1 2 3 4 5 6 7 8 | echo "trash" | sed '/foo/!{q100}; {s/f/b/}'; echo $? trash 100 echo "trash" | sed '/trash/!{q100}; {s/t/b/}'; echo $? brash 0 |
thx uhuntu
Bearbeitet von rklm:
Codeblock für Dateiinhalt