Ich muss alle Leerzeichen in meinem Text durch Kommas ersetzen. Ich verwende derzeit diese Zeile, aber sie funktioniert nicht: Ich erhalte als Ausgabe eine Textdatei, die genau der ursprünglichen entspricht:
sed 's/[:blank:]+/,/g' orig.txt > modified.txt
Vielen Dank
text-processing
aneuryzm
quelle
quelle
Antworten:
Mit
sed
:Oder mit
perl
:Bearbeiten: Um Zeilenumbrüche in Perl auszuschließen, können Sie ein doppeltes Negativ verwenden
's/[^\S\n]+/,/g'
oder nur mit den Leerzeichen Ihrer Wahl übereinstimmen's/[ \t\r\f]+/,/g'
.quelle
+
Betreiber in sed entkommen. Ich habe gerade meine Antwort aktualisiert. Newlines sind Whitepsace in Perl, daher müssen Sie Ihre Whitepsace-Klasse manuell durchführen, wenn Sie sie nicht einschließen möchten. Dafür habe ich auch zwei Lösungen hinzugefügt.Verwenden von
tr
:Dadurch wird jedes horizontale Leerzeichen durch ein Komma ersetzt. Wiederholte Leerzeichen werden nur durch ein einziges Komma ersetzt.
quelle
Hier lautet der Dateiname Server. Er enthält den folgenden Inhalt.
Wenn wir den obigen Befehl verwenden, können wir die folgende Ausgabe erhalten.
quelle