OS X est actuellement livré avec une version de FreeBSD sed de 2005. La plupart des différences ci-dessous s’appliquent également aux autres versions de BSD sed.
OS X utilise sed -Epour ERE et GNU sed -r. -Eest un alias pour -rdans GNU sed (ajouté dans 4.2, non documenté jusqu'à 4.3). Les nouvelles versions de FreeBSD et NetBSD sed supportent à la fois -Eet -r. OpenBSD sed ne supporte que -E.
-i ''fonctionne avec sed sous OS X mais pas sous GNU. -ifonctionne avec GNU sed, les versions récentes de NetBSD, OpenBSD sed, mais pas avec OS X sed. -i -efonctionne avec les deux, mais dans le cas de FreeBSD, il sedcrée une sauvegarde du fichier d'origine avec -ele nom de fichier ajouté (et vous ne devez pas transmettre plus d'une expression à sed).
GNU sed interprète les séquences d' échappement comme \t, \n, \001, \x01, \wet \b. OS X sed et POSIX sed n'interprètent que \n(mais pas dans la partie de remplacement de s).
GNU sed interprète \|, \+et \?en BRE, mais sed et POSIX sed d’OS X ne le font pas. \(, \), \{Et \}sont BRE Posix.
Sed de GNU autorise l’omission ;ou une nouvelle ligne auparavant, }mais pas la sed d’OS X.
i(insert), a(append), et c(change) doivent être suivis d'une barre oblique inverse et d'une nouvelle ligne dans OS X sed et POSIX sed, mais pas dans GNU sed. GNU sed ajoute une nouvelle ligne manquante après le texte inséré par i, aou , cmais OS X de sed ne fonctionne pas. Par exemple, sed 1iaest une alternative GNU à sed $'1i\\\na\n'.
Par exemple, printf a|sed -n pajoute une nouvelle ligne dans sed sous OS X mais pas dans GNU sed.
OS X sed ne prend pas en charge les modificateurs ( Iinsensibles à la casse) ou M(multilignes). Les nouvelles versions du support sed de FreeBSD I.
OS X sed ne prend pas en charge -s( --separate), -u( --unbuffered) ou -z( --null-data).
Une option BSD non prise en charge par GNU sed est celle -aqui wajoute à un fichier au lieu de tronquer un fichier.
Exemples de commandes GNU sed qui ne fonctionnent pas avec sed:
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
sedlui-même est conforme car il fait des choses autorisées (mais non requises, non spécifiées) par la norme. Il existe des cas où il n'est pas conforme et où son utilisationPOSIXLY_CORRECTdans l'environnement peut aider. Comme avecs/[\n]//gcela, il faut supprimer le backlash et lesncaractères, mais supprimer les nouvelles lignes à la place. Ou le comportement de laNcommande sur la dernière ligne.