Mailinglist Archive: opensuse-de (990 mails)

< Previous Next >
Re: sed: Alle Zahlen und Zeichen von A-z loeschen
  • From: "Christian Brabandt" <cblists@xxxxxxxxxx>
  • Date: Tue, 30 Jun 2009 14:36:08 +0200 (CEST)
  • Message-id: <b8d078ba5ecd76c50e4cfca44cb0d7b9.squirrel@xxxxxxxxxxxxxxx>
On Tue, June 30, 2009 2:09 pm, Al Bogner wrote:

Wie lösche ich mit sed in einer Variablen alle Zahlen und Zeichen von
A-Z und
a-z, ö soll also zB erhalten bleiben.

zB

var="Ich_möchte_3_Äpfel_um_1€"
echo "$var" | sed ...

Übrig bleiben soll "öĀ"

Dafür gibt es die Escape-Sequence \w (die auf [a-zA-Z0-9] matched¹.
Zusätzlich hat aber noch Deine locale Einfluss auf die Sonderzeichen. In
einer deutschen Lokale passt nämlich äöß auch in [a-zA-Z0-9]. Daher
setze Deine Locale passend:

#v+
chrisbra t41:~ [1086]% echo "$var" | sed 's/\w//g'
€
chrisbra t41:~ [1086]% locale
LANG=de_DE.UTF-8
LANGUAGE=en_US:en_GB:en
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=
chrisbra t41:~ [1088]% echo "$var" |LC_CTYPE=C sed 's/\w//g'
öĀ
#v-


Grüße,
Christian
__
¹) \w ist eine Gnu Extension und geht daher nur bei Gnu Sed, IIRC. Im
Zweifel halt \w durch [a-zA-Z0-9] ersetzen.
--
:wq!

--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+unsubscribe@xxxxxxxxxxxx
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+help@xxxxxxxxxxxx

< Previous Next >
Follow Ups
References