Druckbare Zeichen in Leerzeichen verwandeln

20/07/2009 - 13:07 von Fr | Report spam
[tr (GNU coreutils) 6.12 / OpenSuSE-11.1]

Hallo zusammen,

die Mengenangabe "[:print:]" unter ignoriert Umlaute, warum?
In meinem Beispiel sollten alle druckbaren (am Terminal sichtbaren?!)
Zeichen zwecks harter Formatierung durch Leerzeichen ersetzt werden:

x="hallo hugo,/ß}àöu79845"
echo "$x" | tr /[:print:]/ \ \
ß àö

Kann mir jemand erklàren, wie's geht?

Skriptfàhige Alternativen sind natürlich auch willkommen - angenehme
Überraschungen und neue Erkenntnisse sind in dieser NG ja üblich :-)

Viele Grüße aus den Alpen,
Frank
 

Lesen sie die antworten

#1 Marcel Bruinsma
20/07/2009 - 18:58 | Warnen spam
wrote:

[tr (GNU coreutils) 6.12 / OpenSuSE-11.1]

die Mengenangabe "[:print:]" unter ignoriert Umlaute, warum?



Vielleicht weil tr (so wie sed) keine MB-Zeichen unterstützt?

x="hallo hugo,/ß}àöu79845"
echo "$x" | tr /[:print:]/ \ \
ß àö



$ echo "$x"
hallo hugo,/ß}àöu79845
$ echo "$x" | tr '[:print:]' 'X'
XXXXXXXXXXXXßXàöXXXXXX
$ echo "$x" | tr -c '[:cntrl:]' 'X'
XXXXXXXXXXXXXXXXXXXXXXXXX
$ echo "$x" | awk '{gsub(/[[:print:]]/,"X");print}'
XXXXXXXXXXXXXXXXXXXXXX

printf -v email $(echo \ 155 141 162 143 145 154 142 162 165 151 \
156 163 155 141 100 171 141 150 157 157 056 143 157 155|tr \ \\\\)
# Live every life as if it were your last! #

Ähnliche fragen