sed gibt einen Exit-Status zurück:
$ echo "foo" | sed 's/xx/yy/'
foo
$ echo $?
0
$ sed 's/xx/yy/' foo.txt
sed: can't read foo.txt: No such file or directory
$ echo $?
2
In den Exit-Codes von Sed geht es darum, ob das Programm erfolgreich beendet wurde oder nicht. Sie haben nichts mit den Interna zu sedtun, sondern nur damit, ob der Befehl ausgeführt werden konnte oder nicht.
Trotzdem bietet GNU sed eine Möglichkeit, dies zu tun:
q [exit-code]
Immediately quit the sed script without pro‐
cessing any more input, except that if auto-
print is not disabled the current pattern
space will be printed. The exit code argument
is a GNU extension.
Zum Beispiel (von hier genommen ):
$ echo "foo"|sed '/foo/ s/f/b/;q'
boo
$ echo $?
0
$ echo "trash"|sed '/foo/{s/f/b/;q}; /foo/!{q100}'
trash
$ echo $?
100
Wenn Sie die Tatsache melden möchten, dass eine Substitution in einer Zeile der Eingabe erfolgreich war, können Sie erfolgreiche Substitutionen im Haltebereich markieren und in der letzten Zeile überprüfen:
seq 6 | sed 's/4/four/;s/5/five/; tm;${x;/1/{x;q};x;q1};b;:m;x;s/.*/1/;x'
tmVerzweigt zum mEtikett, wenn eine Substitution erfolgreich war. Dort setzen wir 1den Laderaum ein, den wir in der letzten Zeile suchen.