Wenn ich eine Zeile habe als:
Thhiisss iisss mmyyy nameeee
Ich möchte dies ausdrucken als:
This is my name
Was ist der Unix-Befehl dafür?
command-line
text-processing
krishna
quelle
quelle
Antworten:
Mit
tr
:Erläuterung: Der
-s
Schaltertr
"drückt" Zeichen wiederholen. Wie gezeigt, kann der Schalter mit einer Reihe von Zeichen verwendet werden:a
bisz
.quelle
Auf einem GNU-System müssen Sie
sed
o.ä. verwenden, wenn Ihr Gebietsschema Mehrbyte- Zeichen verwendet ( wie von Jimmy vorgeschlagen ), da GNUtr
nur auf ein Zeichen pro Byte verweisen kann. In einem ASCII-Gebietsschema können Sie alle Duplikate entfernen, dietr
wie folgt aussehen:So...
... druckt ...
Sie können dies auch selektiv tun, indem Sie sich nach Reichweite auf Ihre Ziele beziehen:
...oder...
... welche das Gleiche sind und welche beide ausgeben:
... oder Gebrauch
[:punct:]
,[:digit:]
,[:lower:]
,[:alpha:]
oder was auch immer Sie möchten. Sie können die Auswahl auch annullieren, wenn-c
...... druckt ...
quelle
Ein Weg mit
sed
:oder noch einfacher:
(danke Costas und mikeserv für Kommentare).
quelle
sed 's/\(.\)\1\+/\1/g'
Versuchen Sie
tr
:quelle