Wenn ich eine Zeile habe als:
Thhiisss iisss mmyyy nameeee
Ich möchte dies ausdrucken als:
This is my name
Was ist der Unix-Befehl dafür?
Wenn ich eine Zeile habe als:
Thhiisss iisss mmyyy nameeee
Ich möchte dies ausdrucken als:
This is my name
Was ist der Unix-Befehl dafür?
Antworten:
Auf einem GNU-System müssen Sie sedo.ä. verwenden, wenn Ihr Gebietsschema Mehrbyte- Zeichen verwendet ( wie von Jimmy vorgeschlagen ), da GNU trnur auf ein Zeichen pro Byte verweisen kann. In einem ASCII-Gebietsschema können Sie alle Duplikate entfernen, die trwie folgt aussehen:
LC_ALL=C tr -s '\0-\255' <input
So...
echo Thhiisss iisss mmyyy nameeee|
LC_ALL=C tr -s '\0-\255'
... druckt ...
This is my name
Sie können dies auch selektiv tun, indem Sie sich nach Reichweite auf Ihre Ziele beziehen:
echo TThhiisss iisss mmyyy nameeee|
LC_ALL=C tr -s '\101-\132'
...oder...
echo TTTThhiisss iisss mmyyy nameeee|
LC_ALL=C tr -s '[:upper:]'
... welche das Gleiche sind und welche beide ausgeben:
Thhiisss iisss mmyyy nameeee
... oder Gebrauch [:punct:], [:digit:], [:lower:], [:alpha:]oder was auch immer Sie möchten. Sie können die Auswahl auch annullieren, wenn -c...
echo 'TTTThhiisss iisss mmyyy nameeee' |
LC_ALL=C tr -cs '[:upper:]'
... druckt ...
TTTThis is my name