Aktualizacja : Począwszy MacOS Big Sur (11,0) , sedteraz nie obsługuje Iflagę na wielkość liter , więc komenda w pytaniu powinny teraz działać (BSD sednie zgłasza swój wersji, ale można przejść przez dzień na dole od manstrony, która powinna być March 27, 2017lub nowszym); prosty przykład:
$ sed 's/ö/@/I' <<<'FÖO'
F@O
Uwaga: I(wielkie litery) to udokumentowana forma flagi, ale idziała również.
Podobnie, począwszy od systemu macOS Big Sur (11.0) jestawk teraz uwzględniany język ( awk --versionpowinien zgłosić 20200816lub nowszy):
$ awk 'tolower($0)' <<<'FÖO'
föo
Poniższe informacje dotyczą macOS do Catalina (10.15) :
Dla jasności: w systemie macOS sed- który jest implementacją BSD - NIE obsługuje dopasowywania bez uwzględniania wielkości liter - trudno w to uwierzyć, ale prawda. Wcześniej zaakceptowane odpowiedź , która sama pokazuje GNU sed polecenia, zyskał ten status z powodu perlopartym roztworu wzmiankowanym w komentarzach.
Aby to rozwiązanie Perla działało również z obcymi znakami , za pośrednictwem UTF-8, użyj czegoś takiego:
perl -C -Mutf8 -pe 's/öœ/oo/i' <<< "FÖŒ" # -> "Foo"
-C włącza obsługę UTF-8 dla strumieni i plików, zakładając, że bieżące ustawienia regionalne są oparte na UTF-8.
-Mutf8mówi Perlowi, aby zinterpretował kod źródłowy jako UTF-8 (w tym przypadku ciąg przekazany do -pe) - jest to krótszy odpowiednik bardziej szczegółowego -e 'use utf8;'.Dziękuję, Mark Reed
(Zauważ, że używanie również awknie jest opcją , ponieważ awkw macOS (tj. BWK awk i BSD awk ) wydaje się być całkowicie nieświadome ustawień narodowych - jego tolower()i toupper()funkcje ignorują obce znaki (i sub()/ gsub()nie mają na początku flag niewrażliwych na wielkość liter z).)
Uwaga na temat relacji sedi awkdo standardu POSIX:
BSD sedi awkograniczają ich funkcjonalność głównie do tego, co nakazują specyfikacje POSIXsed i
POSIXawk , podczas gdy ich odpowiedniki w GNU implementują znacznie więcej rozszerzeń.
Ijest rozszerzeniem GNU, które może nie być dostępne z twoją kopią seda.