OS X वर्तमान में 2005 से FreeBSD sed के साथ आता है। नीचे दिए गए अधिकांश अंतर अन्य BSD sed संस्करणों पर भी लागू होते हैं।
-E
ERE और GNU सेड के उपयोग के लिए OS X का sed उपयोग करता है -r
। GNU sed के -E
लिए एक उपनाम है -r
(4.2 में जोड़ा गया, 4.3 तक प्रलेखित नहीं)। FreeBSD और NetBSD के नए संस्करणों ने sed दोनों का समर्थन किया -E
और -r
। OpenBSD sed केवल समर्थन करता है -E
।
-i ''
OS X के सेड के साथ काम करता है लेकिन GNU सेड के साथ नहीं। -i
GNU sed के साथ काम करता है, NetBSD, OpenBSD के हाल के संस्करण sed
, लेकिन OS X का sed नहीं। -i -e
दोनों के साथ काम करता है, लेकिन FreeBSD के मामले में sed
मूल -e
फ़ाइल का नाम फ़ाइल नाम के साथ जोड़ा गया है (और आपको एक से अधिक एक्सप्रेशन पास करने की आवश्यकता नहीं है sed
) का बैकअप बनाता है ।
जीएनयू sed की व्याख्या की तरह दृश्यों से बचने \t
, \n
, \001
, \x01
, \w
, और \b
। OS X की sed और POSIX sed केवल व्याख्या करते हैं \n
(लेकिन प्रतिस्थापन भाग में नहीं s
)।
GNU sed व्याख्या करता है \|
, \+
और \?
BRE में लेकिन OS X का sed और POSIX sed नहीं। \(
, \)
, \{
, और \}
POSIX BRE हैं।
GNU sed ;
पहले }
ओएस एक्स के सेड को छोड़ने या छोड़ने की अनुमति नहीं देता है।
i
(सम्मिलित करें), a
(परिशिष्ट), और c
(परिवर्तन) के बाद बैकस्लैश और ओएस एक्स के सेड और पोसिक्स सेड में एक नई रेखा का पालन करना होगा लेकिन जीएनयू सेड में नहीं। जीएनयू एसईडी पाठ द्वारा डाला के बाद एक लापता न्यू लाइन कहते हैं i
, a
या c
लेकिन ओएस एक्स के sed नहीं करता है। उदाहरण के लिए sed 1ia
एक GNU विकल्प है sed $'1i\\\na\n'
।
उदाहरण के लिए printf a|sed -n p
, OS X के सेड में एक नई पंक्ति जोड़ता है लेकिन GNU सेड में नहीं।
OS X का सेड I
केस (असंवेदनशील) या M
(बहु-पंक्ति) संशोधक का समर्थन नहीं करता है । FreeBSD sed समर्थन के नए संस्करण I
।
OS X का sed समर्थन नहीं करता है -s
( --separate
), -u
( --unbuffered
), या -z
( --null-data
)।
एक बीएसडी विकल्प जो जीएनयू सेड द्वारा समर्थित नहीं है -a
, जो w
किसी फाइल को रौंदने के बजाय एक फाइल में जोड़ देता है ।
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
अंतिम पंक्ति पर कमांड का व्यवहार ।