คุณสามารถใช้ Q nที่จะเลิกกับสถานะทางออกn - แต่ที่จะทำให้มันมีประโยชน์นอกจากนี้คุณยังจะต้องใช้บางกิ่งและการควบคุมการไหล :
t
branch ตามเงื่อนไข (นั่นคือ: ข้ามไปที่เลเบล) เฉพาะเมื่อs///
คำสั่งประสบความสำเร็จตั้งแต่บรรทัดอินพุตสุดท้ายถูกอ่านหรือมีสาขาอื่นที่มีเงื่อนไข
อาจเป็นการดีที่สุดที่จะเลือกค่าสำหรับnที่แตกต่างจากหนึ่งในค่าสถานะการออกมาตรฐาน:
สถานะการออกเป็นศูนย์หมายถึงความสำเร็จและค่าที่ไม่ใช่ศูนย์หมายถึงความล้มเหลว GNU 'sed' ส่งคืนค่าข้อผิดพลาดสถานะ exit ต่อไปนี้:
0
Successful completion.
1
Invalid command, invalid syntax, invalid regular expression or a
GNU 'sed' extension command used with '--posix'.
2
One or more of the input file specified on the command line could
not be opened (e.g. if a file is not found, or read permission is
denied). Processing continued with other files.
4
An I/O error, or a serious processing error during runtime, GNU
'sed' aborted immediately.
ตัวอย่างเช่น
$ echo "foo.bar" | sed 's/bar.*$//; t; q42' ; echo $?
foo.
0
แต่ทว่า
$ echo "foo.bar" | sed 's/baz.*$//; t; q42' ; echo $?
foo.bar
42
หากคุณต้องการละเว้นการพิมพ์เริ่มต้นของพื้นที่รูปแบบจากนั้นแทนที่q
ด้วยQ
(โปรดทราบว่าQ
เป็นส่วนขยาย GNU)
sed
ส่วนใหญ่จะมีสถานะออก แต่ก็ไม่ได้ทำสิ่งที่คุณต้องการที่นี่ หากsed
คำสั่งล้มเหลวตัวอย่างเช่นหากคุณพยายามเรียกใช้บนไฟล์ที่คุณไม่มีสิทธิ์เข้าถึงเพื่อเขียนหรือที่ไม่มีอยู่sed
จะออกจากสถานะการออกที่ไม่ใช่ 0 สถานะการออกเพียงระบุว่าsed
มีการจัดการที่จะทำในสิ่งที่คุณบอกให้ทำและecho "foo.bar" | sed 's/pop.*$//'
ดำเนินการอย่างถูกต้องpop
มันลบทุกบรรทัดด้วย ว่าไม่มีบรรทัดดังกล่าวไม่เกี่ยวข้องคำสั่งยังคงทำงาน