Si j'ai une ligne comme:
Thhiisss iisss mmyyy nameeee
Je veux l'imprimer comme:
This is my name
Quelle est la commande unix pour cela?
command-line
text-processing
krishna
la source
la source
Réponses:
Avec
tr
:Explication: Le
-s
changement detr
"répéter" les caractères de répétition. Comme illustré, le commutateur peut être utilisé avec une plage de caractères:a
àz
.la source
Sur un système GNU, vous devrez utiliser
sed
ou similaire si votre environnement local utilise des caractères multi-octets ( comme le suggère jimmij ) car GNUtr
ne peut référencer qu'un caractère par octet. Dans un environnement local ASCII, vous pouvez supprimer tous les doublons avec /tr
comme:Donc...
... impressions ...
Vous pouvez également le faire de manière sélective en vous référant à vos cibles par plage:
...ou...
... qui fonctionnent comme la même chose, et qui impriment tous les deux:
... ou l' utilisation
[:punct:]
,[:digit:]
,[:lower:]
,[:alpha:]
ou tout ce que vous voulez. Vous pouvez également annuler la sélection w /-c
so ...... impressions ...
la source
Un aller simple avec
sed
:ou encore plus simple:
(merci Costas et mikeserv pour les commentaires).
la source
sed 's/\(.\)\1\+/\1/g'
Essayez
tr
:la source