ปัจจุบัน OS X มาพร้อมกับ FreeBSD sed จากปี 2005 ความแตกต่างด้านล่างส่วนใหญ่ยังใช้กับรุ่น BSD sed อื่น ๆ
OS X ของใช้ sed สำหรับการใช้งาน-E
ERE และ GNU sed เป็นนามแฝงสำหรับใน GNU sed (เพิ่มใน 4.2 ไม่ได้บันทึกไว้จนถึง 4.3) รุ่นใหม่ของ FreeBSD และ NetBSD SED สนับสนุนทั้งและ OpenBSD sed สนับสนุนเท่านั้น-r
-E
-r
-E
-r
-E
-i ''
ทำงานร่วมกับ sed ของ OS X แต่ไม่ GNU sed -i
ทำงานร่วมกับ GNU sed, NetBSD รุ่นล่าสุด, OpenBSD sed
แต่ไม่รวมถึง OS X -i -e
ทำงานได้กับทั้งสองอย่าง แต่ในกรณีของ FreeBSD sed
ทำให้การสำรองข้อมูลของไฟล์ต้นฉบับ-e
ต่อท้ายกับชื่อไฟล์ (และคุณต้องผ่านไม่เกินหนึ่งนิพจน์ไปsed
)
GNU sed ตีความลำดับหนีเช่น\t
, \n
, \001
, \x01
, และ\w
\b
sed และ POSIX sed ของ OS X ตีความได้เฉพาะ\n
(แต่ไม่ใช่ในส่วนการแทนที่s
)
GNU sed ตีความ\|
, \+
และ\?
ใน BRE แต่ OS X ของ sed และ POSIX sed ไม่ \(
, \)
, \{
และ\}
มี POSIX BRE
GNU sed อนุญาตให้ข้าม;
หรือขึ้นบรรทัดใหม่มาก่อน}
แต่ sed ของ OS X ไม่ได้
i
(insert), a
(ผนวก) และc
(เปลี่ยน) ต้องตามด้วยแบ็กสแลชและบรรทัดใหม่ใน sed ของ OS X และ POSIX sed แต่ไม่ใช่ใน GNU sed sed GNU เพิ่มขึ้นบรรทัดใหม่หายไปหลังจากที่ข้อความที่เขียนโดยi
, a
หรือc
แต่ OS X ของ sed ไม่ ยกตัวอย่างเช่นsed 1ia
เป็นทางเลือกที่ GNU sed $'1i\\\na\n'
ไป
ตัวอย่างเช่นprintf a|sed -n p
เพิ่มบรรทัดใหม่ใน sed ของ OS X แต่ไม่ได้อยู่ใน GNU sed
sed ของ OS X ไม่รองรับตัวดัดแปลงI
(ตัวพิมพ์เล็ก - ใหญ่) หรือM
(หลายบรรทัด) I
เวอร์ชั่นใหม่ของการสนับสนุน FreeBSD sed
sed ของ OS X ไม่รองรับ-s
( --separate
), -u
( --unbuffered
) หรือ-z
( --null-data
)
หนึ่งตัวเลือก BSD ที่ไม่รองรับโดย GNU sed คือ-a
ทำให้w
ผนวกไฟล์แทนการตัดทอนไฟล์
ตัวอย่างของคำสั่ง sed ของ GNU ที่ไม่ทำงานกับ sed ของ OS X:
sed /pattern/,+2d # like `sed '/pattern/{N;N;d;}'`
sed -n 0~3p # like `awk NR%3==0`
sed /pattern/Q # like `awk '/pattern/{exit}1'` or `sed -n '/pattern/,$!p'`
sed 's/\b./\u&/g' # \u converts the next character to uppercase
sed 's/^./\l&/' # \l converts the next character to lowercase
sed -i '1ecat file_to_prepend' file # e executes a shell command
sed -n l0 # 0 disables wrapping
sed
เองนั้นเป็นไปตามมาตรฐานที่ได้รับอนุญาต มีหลายกรณีที่ไม่เข้ากันได้และที่ใช้งานPOSIXLY_CORRECT
ในสภาพแวดล้อมสามารถช่วยได้ เช่นเดียวกับs/[\n]//g
ที่จะต้องลบแบ็กสแลชและn
ตัวอักษร แต่ให้ลบบรรทัดใหม่แทน หรือพฤติกรรมของN
คำสั่งในบรรทัดสุดท้าย