OS X actualmente viene con un archivo FreeBSD de 2005. La mayoría de las diferencias a continuación también se aplican a otras versiones de BSD.
Usos sed de OS X para usos sed -Ede ERE y GNU -r. -Ees un alias para -ren GNU sed (agregado en 4.2, no documentado hasta 4.3). Las versiones más recientes de FreeBSD y NetBSD son compatibles con ambos -Ey -r. OpenBSD sed solo es compatible -E.
-i ''funciona con OS X's sed pero no con GNU sed. -ifunciona con GNU sed, versiones recientes de NetBSD, OpenBSD sed, pero no con OS X sed. -i -efunciona con ambos, pero en el caso de FreeBSD sedrealiza una copia de seguridad del archivo original junto -econ el nombre del archivo (y no necesita pasar más de una expresión sed).
GNU interpreta sed secuencias de escape como \t, \n, \001, \x01, \w, y \b. OS X's sed y POSIX sed solo interpretan \n(pero no en la parte de reemplazo de s).
GNU sed interpreta \|, \+y \?en BRE, pero sed de OS X y POSIX sed no. \(, \), \{, Y \}son POSIX BRE.
GNU sed permite omitir ;o una nueva línea antes, }pero sed de OS X no.
i(insert), a(append) y c(change) deben ir seguidos de una barra diagonal inversa y una nueva línea en OS X's sed y POSIX sed pero no en GNU sed. Sed de GNU añade una nueva línea faltante después del texto insertado por i, a, o csino OS X de sed no lo hace. Por ejemplo, sed 1iaes una alternativa a GNU sed $'1i\\\na\n'.
Por ejemplo, printf a|sed -n pagrega una nueva línea en sed de OS X pero no en sed de GNU.
El sistema operativo OS X no admite los modificadores I(sin distinción entre mayúsculas y minúsculas) o M(multilínea). Las versiones más recientes de soporte de sed de FreeBSD I.
El sedimento de OS X no es compatible con -s( --separate), -u( --unbuffered) o -z( --null-data).
Una opción BSD que no es compatible con GNU sed es -a, lo que hace que wanexar a un archivo en lugar de truncar un archivo.
Ejemplos de comandos de sed de GNU que no funcionan con sed de 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
sedsí es compatible ya que hace cosas permitidas (pero no requeridas, no especificadas) por el estándar. Hay casos en los que no es compatible y dondePOSIXLY_CORRECTpuede ser útil ejecutarlo en el entorno. Al iguals/[\n]//gque con eso, debe eliminar la reacción y losncaracteres, pero eliminar las nuevas líneas en su lugar. O el comportamiento delNcomando en la última línea.