sed không trả về trạng thái thoát:
$ 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
Mã thoát của Sed là về việc chương trình đã thoát thành công hay chưa, chúng không liên quan gì đến nội bộ của những gì sedđang làm, chỉ là liệu lệnh có được quản lý để chạy hay không.
Điều đó nói rằng, GNU sed cung cấp một cách để làm điều này:
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.
Ví dụ (lấy từ đây ):
$ echo "foo"|sed '/foo/ s/f/b/;q'
boo
$ echo $?
0
$ echo "trash"|sed '/foo/{s/f/b/;q}; /foo/!{q100}'
trash
$ echo $?
100
Nếu bạn muốn báo cáo thực tế rằng bất kỳ sự thay thế nào đã thành công trên bất kỳ dòng nào của đầu vào, bạn có thể gắn cờ thay thế thành công trong không gian giữ và kiểm tra nó trên dòng cuối cùng:
seq 6 | sed 's/4/four/;s/5/five/; tm;${x;/1/{x;q};x;q1};b;:m;x;s/.*/1/;x'
tmcác chi nhánh để mnhãn nếu bất kỳ thay thế đã thành công. Ở đó, chúng tôi đặt 1trong không gian giữ, mà chúng tôi tìm kiếm trên dòng cuối cùng.