![](https://seccdn.libravatar.org/avatar/7b33cb1e776e35b87edb8ef09f0c888f.jpg?s=120&d=mm&r=g)
Hallo, Am Mon, 28 Feb 2005, Ruediger Meier schrieb:
On Monday 28 February 2005 19:49, David Haller wrote:
$ ( LINE="xxxyyyzzz"; echo "$LINE" | grep -i -o "YYY" ; ) grep: invalid option -- o Usage: grep [OPTION]... PATTERN [FILE]...
Abgesehen davon: mit nem aktuellerem grep 2.5.1 geht's. Das liegt an deiner locale: das hab ich auch. ich hab die Optionen auch erst hinten daran gepackt nachdem ich bemerkt habe dass hier geht. Im script hab ich es richtig herum.
Was spuckt bei dir 'locale' aus? Entscheidend ist scheinbar 'LC_COLLATE'...
$ locale LANG=en_US LC_CTYPE="en_US" LC_NUMERIC="en_US" LC_TIME="en_US" LC_COLLATE="en_US" LC_MONETARY="en_US" LC_MESSAGES="en_US" LC_PAPER="en_US" LC_NAME="en_US" LC_ADDRESS="en_US" LC_TELEPHONE="en_US" LC_MEASUREMENT="en_US" LC_IDENTIFICATION="en_US" LC_ALL=
Mit diesen locales funktioniert "grep -i -o" nicht. Mit LC_CTYPE="de_DE.UTF-8" gehts dann.
(LC_COLLATE scheint keine Rolle zu spielen)
Hm. Bei mir schien es LC_COLLATE (SuSE 9.1) zu sein (Zeilenumbrueche bei leerem 'grep' von mir nachgetragen, da sonst unleserlich): slarty:~$ ( LINE="xxxyyyzzz"; for lang in de_DE en_US; do for chars \ in UTF-8 ISO-8859-1 ""; do export LC_CTYPE="${lang}.${chars}"; \ echo -n "$LANG, $LC_CTYPE: "; echo "$LINE" | grep -i -o "YYY" ; \ done; done; ) en_US.UTF-8, de_DE.UTF-8: yyy en_US.UTF-8, de_DE.ISO-8859-1: en_US.UTF-8, de_DE.: en_US.UTF-8, en_US.UTF-8: yyy en_US.UTF-8, en_US.ISO-8859-1: en_US.UTF-8, en_US.: slarty:~$ ( LINE="xxxyyyzzz"; for lang in de_DE en_US; do for chars \ in UTF-8 ISO-8859-1 ""; do export LC_COLLATE="${lang}.${chars}"; \ echo -n "$LANG, $LC_COLLATE: "; echo "$LINE" | grep -i -o "YYY" ; \ done; done; ) en_US.UTF-8, de_DE.UTF-8: yyy en_US.UTF-8, de_DE.ISO-8859-1: yyy en_US.UTF-8, de_DE.: en_US.UTF-8, en_US.UTF-8: yyy en_US.UTF-8, en_US.ISO-8859-1: yyy en_US.UTF-8, en_US.: slarty:~ Man beachte, dass LANG jeweils gleich ist -> vgl. man grep bzgl. Auswertungsreihenfolge der Variablen.
LC_CTYPE Character classification and case conversion
Jup, das klingt eigentlich logischer.
Es sollte doch aber irgendwie fuer "en_US" auch funktionieren (das ist doch bestimmt der haeufigste verwendete Fall). Is mein grep vielleicht kaputt oder irgendwas anderes?
S.o. In welcher manpage steht nochmal, welche Teile von $LANG von welchen LC_ beachtet werden bzw. dort relevant sind? Es scheint jedenfalls, dass du ein charset angeben musst. HTH, -dnh --
(void *)'\0' Didn't you see the sign? It said VOID WHERE PROHIBITED Don't tell me you can't C. -- the Internet Oracle [#1307-01]