अपडेट : macOS बिग सुर (11.0) के साथ शुरू , sed
अब केस-असंवेदनशील मिलान के लिए ध्वज का समर्थन करता हैI
, इसलिए प्रश्न में कमांड को अब काम करना चाहिए (बीएसडी sed
इसके संस्करण की रिपोर्ट नहीं करता है, लेकिन आप नीचे तिथि तक जा सकते हैं। का man
पेज है, जो होना चाहिए March 27, 2017
या अधिक हाल ही में); एक सरल उदाहरण:
$ sed 's/ö/@/I' <<<'FÖO'
F@O
नोट: I
(अपरकेस) ध्वज का प्रलेखित रूप है, लेकिन i
साथ ही साथ काम भी करता है।
इसी तरह, के साथ शुरू MacOS बिग सुर (11.0) awk
अब है लोकेल अवगत ( awk --version
रिपोर्ट करना चाहिए 20200816
और हाल ही में या):
$ awk 'tolower($0)' <<<'FÖO'
föo
निम्नलिखित पर लागू होता है MacOS कैटालिना अप करने के लिए (10.15) :
स्पष्ट होने के लिए: macOS पर, sed
- जो कि BSD कार्यान्वयन है - केस-असंवेदनशील मिलान का समर्थन नहीं करता है - विश्वास करना मुश्किल है, लेकिन सच है। पूर्व में स्वीकार किए जाते हैं जवाब है, जो अपने आप में एक से पता चलता जीएनयू sed
आदेश, की वजह से है कि दर्जा प्राप्त perl
आधारित समाधान टिप्पणी में उल्लेख किया है।
यह सुनिश्चित करने के लिए कि पर्ल वर्ण यूटीएफ -8 के माध्यम से विदेशी पात्रों के साथ काम करते हैं , जैसे कुछ का उपयोग करें:
perl -C -Mutf8 -pe 's/öœ/oo/i' <<< "FÖŒ" # -> "Foo"
-C
धाराओं और फ़ाइलों के लिए UTF-8 समर्थन चालू करता है, मान लें कि वर्तमान स्थान UTF-8-आधारित है।
-Mutf8
पर्ल को यूटीएफ -8 के रूप में स्रोत कोड की व्याख्या करने के लिए कहता है (इस मामले में, स्ट्रिंग पास हो गई है -pe
) - यह अधिक क्रिया के छोटे बराबर है -e 'use utf8;'.
धन्यवाद, मार्क रीड
(ध्यान दें कि उपयोग awk
करना एक विकल्प नहीं है , जैसा awk
कि macOS (यानी, BWK awk और BSD awk ) पूरी तरह से स्थानों से पूरी तरह से अनभिज्ञ प्रतीत होता है - इसके tolower()
और toupper()
फ़ंक्शंस विदेशी वर्णों को अनदेखा करते हैं (और sub()
/ gsub()
शुरू करने के लिए केस-इंसेंसिटिव फ़्लैग नहीं होते हैं) साथ में)।)
sed
और awk
POSIX मानक के संबंध पर एक नोट :
BSD sed
और awk
अपनी कार्यक्षमता को ज्यादातर POSIXsed
और
POSIX के लिएawk
जनादेश को सीमित करता है , जबकि उनके GNU समकक्ष कई और एक्सटेंशन लागू करते हैं।
I
एक GNU एक्सटेंशन है जो आपके sed की कॉपी के साथ उपलब्ध नहीं हो सकता है।