回答:
GNUシステムでは、(jimmijが示唆するように)sed
ロケールがマルチバイト文字を使用する場合、GNU はバイトごとの文字しか参照できないため、使用するか、類似する必要があります。ASCIIロケールでは、次のようなすべての重複を削除できます。tr
tr
LC_ALL=C tr -s '\0-\255' <input
そう...
echo Thhiisss iisss mmyyy nameeee|
LC_ALL=C tr -s '\0-\255'
...プリント...
This is my name
範囲ごとにターゲットを参照することにより、選択的に行うこともできます。
echo TThhiisss iisss mmyyy nameeee|
LC_ALL=C tr -s '\101-\132'
...または...
echo TTTThhiisss iisss mmyyy nameeee|
LC_ALL=C tr -s '[:upper:]'
...同じものであることがわかり、両方とも印刷されます:
Thhiisss iisss mmyyy nameeee
...または使用[:punct:]
、[:digit:]
、[:lower:]
、[:alpha:]
またはものは何でもしたいと思います。また、選択を無効にすることもでき-c
ます...
echo 'TTTThhiisss iisss mmyyy nameeee' |
LC_ALL=C tr -cs '[:upper:]'
...プリント...
TTTThis is my name