निम्नलिखित उदाहरण में, sed
रेखाएं एक a
a से शुरू होती हैं c
और उस रेखा के पहले वर्ण को प्रिंट करती हैं ( a
या c
):
$ echo "ag
bh
ci
dj
ek
fl" | sed 's/\(a\|c\)./\1/' # Matches lines starting with 'a' or 'c'.
output:
a
bh
c
dj
ek
fl
हालाँकि, जो लाइनें पैटर्न से मेल नहीं खाती हैं वे भी प्रिंट आउट हैं। मैं sed
उन पंक्तियों को कैसे छोड़ूं जो पैटर्न से मेल नहीं खाती हैं? मैं इसके साथ संयोजन करके वांछित प्रभाव प्राप्त कर सकता हूं grep
(निम्नानुसार) लेकिन मैं यह जानना चाहूंगा कि क्या sed
वह "खुद से" प्राप्त कर सकता है।
$ echo "ag
bh
ci
dj
ek
fl" | grep '[ac]' | sed 's/\(a\|c\)./\1/'
output:
a
c
इससे कोई फर्क नहीं पड़ता कि आप वास्तव में क्या जानना चाहते थे, लेकिन आपका पैटर्न ^ से शुरू होना चाहिए, इसलिए यह लाइन की शुरुआत के लिए लंगर डाला गया है। जब तक इसे कोडित किया जाता है, तब तक यह पंक्ति में कहीं भी एक या सी से मेल खाएगा क्योंकि यह अंतिम वर्ण नहीं है।
—
जो