Odpowiedzi:
W systemie GNU musisz użyć tego sed
lub podobnego, jeśli twoje ustawienia regionalne używają znaków wielobajtowych ( jak sugeruje jimmij ), ponieważ GNU tr
może odwoływać się tylko do znaku na bajt. W ustawieniach ASCII możesz usunąć wszystkie duplikaty w / tr
like:
LC_ALL=C tr -s '\0-\255' <input
Więc...
echo Thhiisss iisss mmyyy nameeee|
LC_ALL=C tr -s '\0-\255'
... drukuje ...
This is my name
Możesz to również zrobić selektywnie, odnosząc się do swoich celów według zakresu:
echo TThhiisss iisss mmyyy nameeee|
LC_ALL=C tr -s '\101-\132'
...lub...
echo TTTThhiisss iisss mmyyy nameeee|
LC_ALL=C tr -s '[:upper:]'
... które okazują się być tym samym i które oba drukują:
Thhiisss iisss mmyyy nameeee
... lub wykorzystanie [:punct:]
, [:digit:]
, [:lower:]
, [:alpha:]
lub cokolwiek chce. Możesz także negować wybór w / -c
so ...
echo 'TTTThhiisss iisss mmyyy nameeee' |
LC_ALL=C tr -cs '[:upper:]'
... drukuje ...
TTTThis is my name