OS X attualmente viene fornito con una versione di FreeBSD sed del 2005. La maggior parte delle differenze di seguito si applica anche ad altre versioni di BSD sed.
Gli usi sed di OS X per gli usi sed -Edi ERE e GNU sed -r. -Eè un alias per -rin GNU sed (aggiunto in 4.2, non documentato fino a 4.3). Le versioni più recenti di FreeBSD e NetBSD sed supportano sia -Ee -r. OpenBSD sed supporta solo -E.
-i ''funziona con sed di OS X ma non con GNU sed. -ifunziona con GNU sed, versioni recenti di NetBSD, OpenBSD sed, ma non con OS X sed. -i -efunziona con entrambi, ma nel caso di FreeBSD sedesegue un backup del file originale con l' -eaggiunta al nome del file (e non devi passare più di un'espressione a sed).
GNU sed interpreta sequenze di escape come \t, \n, \001, \x01, \w, e \b. Le versioni sed e POSIX di OS X interpretano solo \n(ma non nella parte sostitutiva di s).
GNU sed interpreta \|, \+e \?in BRE ma sed X di OS X e POSIX no. \(, \), \{, E \}sono POSIX BRE.
GNU sed consente di omettere ;o una nuova riga prima }ma OS X sed non lo fa.
i(insert), a(append) e c(change) devono essere seguiti da una barra rovesciata e da una nuova riga nella versione OS X e POSIX ma non nella versione GNU sed. Sed GNU aggiunge un ritorno a capo mancante dopo il testo inserito da i, ao cma OS X di sed non lo fa. Ad esempio sed 1iaè un'alternativa GNU a sed $'1i\\\na\n'.
Ad esempio printf a|sed -n paggiunge una nuova riga nella versione di OS X ma non nella versione di GNU.
La sed di OS X non supporta i modificatori I(senza distinzione tra maiuscole e minuscole) o M(multilinea). Versioni più recenti del supporto sed di FreeBSD I.
La sed di OS X non supporta -s( --separate), -u( --unbuffered) o -z( --null-data).
Un'opzione BSD che non è supportata da GNU sed è -a, che rende wappend a un file invece di troncare un file.
Esempi di comandi GNU sed che non funzionano con sed di 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
sedstesso è conforme in quanto fa le cose consentite (ma non richieste, non specificate) dallo standard. Ci sono casi in cui non è conforme e dovePOSIXLY_CORRECTpuò essere di aiuto eseguirlo nell'ambiente. Come ins/[\n]//gquesto caso è necessario rimuovere gioco encaratteri, ma rimuovere invece le nuove righe. O il comportamento delNcomando sull'ultima riga.