Se estou tendo uma linha como:
Thhiisss iisss mmyyy nameeee
Quero imprimir isso como:
This is my name
Qual é o comando unix para isso?
Se estou tendo uma linha como:
Thhiisss iisss mmyyy nameeee
Quero imprimir isso como:
This is my name
Qual é o comando unix para isso?
Respostas:
Em um sistema GNU, você precisará usar sedou semelhante se o seu código do idioma usar caracteres multibyte ( como jimmij sugere ) porque o GNU trpode fazer referência apenas a um caractere por byte. Em um código de idioma ASCII, você pode remover todas as duplicatas com tr:
LC_ALL=C tr -s '\0-\255' <input
Então...
echo Thhiisss iisss mmyyy nameeee|
LC_ALL=C tr -s '\0-\255'
... imprime ...
This is my name
Você também pode fazer isso de forma seletiva consultando seus destinos por intervalo:
echo TThhiisss iisss mmyyy nameeee|
LC_ALL=C tr -s '\101-\132'
...ou...
echo TTTThhiisss iisss mmyyy nameeee|
LC_ALL=C tr -s '[:upper:]'
... que funcionam da mesma forma e que imprimem:
Thhiisss iisss mmyyy nameeee
... ou utilização [:punct:], [:digit:], [:lower:], [:alpha:]ou o que quer que você gostaria. Você também pode negar a seleção w / -cso ...
echo 'TTTThhiisss iisss mmyyy nameeee' |
LC_ALL=C tr -cs '[:upper:]'
... imprime ...
TTTThis is my name