Se estou tendo uma linha como:
Thhiisss iisss mmyyy nameeee
Quero imprimir isso como:
This is my name
Qual é o comando unix para isso?
command-line
text-processing
Krishna
fonte
fonte
Respostas:
Com
tr
:Explicação: A
-s
opção detr
"espremer" caracteres repetidos. Como mostrado, o switch pode ser usado com um intervalo de caracteres:a
paraz
.fonte
Em um sistema GNU, você precisará usar
sed
ou semelhante se o seu código do idioma usar caracteres multibyte ( como jimmij sugere ) porque o GNUtr
pode fazer referência apenas a um caractere por byte. Em um código de idioma ASCII, você pode remover todas as duplicatas comtr
:Então...
... imprime ...
Você também pode fazer isso de forma seletiva consultando seus destinos por intervalo:
...ou...
... que funcionam da mesma forma e que imprimem:
... ou utilização
[:punct:]
,[:digit:]
,[:lower:]
,[:alpha:]
ou o que quer que você gostaria. Você também pode negar a seleção w /-c
so ...... imprime ...
fonte
Uma maneira com
sed
:ou ainda mais simples:
(obrigado Costas e mikeserv pelos comentários).
fonte
sed 's/\(.\)\1\+/\1/g'
Tente
tr
:fonte