OS X şu anda 2005'ten itibaren FreeBSD sed ile birlikte geliyor. Aşağıdaki farklılıkların çoğu diğer BSD sed versiyonları için de geçerli.
OS X'in sed -E
ERE ve GNU sed kullanır -r
. GNU sed -E
için bir takma -r
addır (4.2'ye eklenmiştir, 4.3'e kadar belgelenmemiş). FreeBSD ve NetBSD'nin SED yeni versiyonları her ikisini de destekler -E
ve -r
. OpenBSD sed sadece desteklemektedir -E
.
-i ''
OS X’lerin sed ile çalışır ancak GNU sed ile değil. -i
GNU sed, NetBSD'nin son sürümleri, OpenBSD ile çalışır sed
, ancak OS X'in sed'i değildir. -i -e
her ikisi ile çalışır ancak FreeBSD durumunda , dosya adına eklenmiş sed
orijinal dosyanın yedeğini alır -e
(ve birden fazla ifadeye geçmeniz gerekmez sed
).
GNU sed, yorumlanması gibi dizileri kaçış \t
, \n
, \001
, \x01
, \w
, ve \b
. OS X'in sed ve POSIX sed yalnızca yorumluyor \n
(ancak bunun yerine kullanılmıyor s
).
GNU, yorumlanması sed \|
, \+
ve \?
BRE ama OS X'in sed ve POSIX sed yapamaz. \(
, \)
, \{
Ve \}
POSIX BRE vardır.
GNU sed, daha ;
önce ihmal edilmesine veya yeni bir satır }
olmasına izin verir, ancak OS X'in sed'i değildir.
i
(insert), a
(append) ve c
(change) ardından bir ters eğik çizgi ve OS X'in sed ve POSIX sed'sindeki yeni bir satır ve GNU sed'de bulunmaması gerekir. GNU sed tarafından eklenen metinden sonra bir eksik yeni satır ekler i
, a
ya c
sed ancak OS X en etmez. Örneğin sed 1ia
bir GNU alternatifidir sed $'1i\\\na\n'
.
Örneğin printf a|sed -n p
, OS X'in sed'ine yeni bir satır ekler, ancak GNU sed'de değil.
OS X'in sed'i I
(büyük / küçük harfe duyarsız) veya M
(çok satırlı) değiştiricileri desteklemez. FreeBSD sed'nin daha yeni sürümleri I
.
OS X'in sed -s
( --separate
), -u
( --unbuffered
) veya -z
( --null-data
) desteklemiyor.
GNU sed tarafından desteklenmeyen bir BSD seçeneği, dosyayı kesmek yerine bir dosyaya eklemeyi -a
yapar w
.
OS X'in sed ile çalışmayan GNU sed komutlarına örnekler:
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
, standart tarafından izin verilen (ancak gerekli olmayan, belirtilmeyen) şeyleri yerine getirdiği için uyumludur. Uyumlu olmadığı vePOSIXLY_CORRECT
ortamda çalıştırmanın yardımcı olabileceği durumlar vardır. Bunun gibis/[\n]//g
boşlukları ven
karakterleri kaldırmalı fakat bunun yerine yeni satırları kaldırmalı. VeyaN
son satırdaki komutun davranışı .