Hallo, Am Tue, 01 Mar 2005, Ruediger Meier schrieb:
On Tuesday 01 March 2005 15:28, David Haller wrote:
Am Tue, 01 Mar 2005, Ruediger Meier schrieb:
On Tuesday 01 March 2005 01:49, David Haller wrote: [..]
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}"; \
^^^^^^^^^^^^^^^^ Wie schon gesagt, LC_COLLATE scheint zwar auch eine Rolle zu spielen aber die Hauptrolle hat LC_CTYPE.
Stimmt.
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
^^^^^^^^^^^^^^^^^^^^^ Und wie ist LC_CTYPE hier gesetzt?
Erwischt.
also wenn bei mir "locale" fuer $LC_CTYPE kein oder ein ISO charset anzeigt, dann klappt "grep -i -o" nicht.
Das deckt sich auch mit Deinen Angaben, denn $LANG ist bei Dir ja IMMER auf UTF-8 und als Du die Varianten fuer $LC_COLLATE durchprobiert hast war $LC_CTYPE sicher nicht explizit gesetzt also nahm er das UTF-8 von $LANG
Komisch. Da muesste man mal in den Quelltext / das Changelog schauen. Aber das -o bei grep ist ja eh unportabel, und es geht ja auch anders, naemlich portabel mit sed. slarty:~$ cat /tmp/greptest.sh #!/bin/sh LINE="xxxyyyzzz"; unset LANG LC_ALL LC_CTYPE LC_COLLATE; for lang in de_DE en_US; do for chars in UTF-8 ISO-8859-1 ""; do export LC_COLLATE="${lang}.${chars}"; printf "%32s: grep: %s sed: %s\n" "$LANG, $LC_COLLATE, $LC_CTYPE" \ `echo "$LINE" | grep -i -o "YYY" | grep 'yyy' || echo "___"` \ `echo "$LINE" | sed -n 's/.*\(YYY\).*/\1/ip'`; unset LC_COLLATE export LC_CTYPE="${lang}.${chars}"; printf "%32s: grep: %s sed: %s\n" "$LANG, $LC_COLLATE, $LC_CTYPE" \ `echo "$LINE" | grep -i -o "YYY" | grep 'yyy' || echo "___"` \ `echo "$LINE" | sed -n 's/.*\(YYY\).*/\1/ip'`; done; done; slarty:~$ sh /tmp/greptest.sh , de_DE.UTF-8, : grep: ___ sed: yyy , , de_DE.UTF-8: grep: yyy sed: yyy , de_DE.ISO-8859-1, de_DE.UTF-8: grep: yyy sed: yyy , , de_DE.ISO-8859-1: grep: ___ sed: yyy , de_DE., de_DE.ISO-8859-1: grep: ___ sed: yyy , , de_DE.: grep: ___ sed: yyy , en_US.UTF-8, de_DE.: grep: ___ sed: yyy , , en_US.UTF-8: grep: yyy sed: yyy , en_US.ISO-8859-1, en_US.UTF-8: grep: yyy sed: yyy , , en_US.ISO-8859-1: grep: ___ sed: yyy , en_US., en_US.ISO-8859-1: grep: ___ sed: yyy , , en_US.: grep: ___ sed: yyy -dnh -- Schau Dir Evolution an, das ist mittlerweile genauso dämlich wie Outlook. Ein VBS-Interpreter fehlt noch, aber der kommt bestimmt bald. Das dauert nimmer lang. [Adalbert Michelic in suse-linux]