[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Problem mit sed und y///



On 03.09.2016 18:18, Andreas Schmidt wrote:
Hallo,

ich möchte in vielen Dateien in einer bestimmten Zeile alls
Großbuchstaben durch Kleinbuchstaben ersetzen. Mit tr geht das ganz
einfach:
***
$ echo "ASDF" | tr "A-Z" "a-z"
asdf
***

Für sed gibt es mit y/// einen ähnlichen Befehl, aber so richtig
zufrieden bin ich damit nicht:
***
$ echo "ASDF" | sed 'y/A-Z/a-z/'
aSDF
$ echo "ASDF" | sed 'y/[A-Z]/[a-z]/'
aSDF
$ echo "ASDF" | sed 'y/[:upper:]/[:lower:]/'
ASDF
$ echo "ASDF" | sed 'y/[[:upper:]]/[[:lower:]]/'
ASDF
***

So hingegen funktioniert es:
***
$ echo "ASDF" | sed
'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'
asdf
***

Beide Zeichensets auszuschreiben ist aber umständlich, anfällig für
Tippfehler und schwer zu durchschauen. Gibt es nicht doch vielleicht
eine Möglichkeit, hier Bereichsangaben ("[A-Z]") oder Klassen
("[:upper:]") zu verwenden?

Ich glaube nicht.

Wenn Du auch awk verwenden darfst oder willst, dann sollte

$ echo "ASDF" | awk '{print tolower($0)}'

funktionieren.

Rolf


Reply to: