it-swarm.com.de

Wie ersetzt man Leerzeichen durch Komma?

Ich möchte den leeren Raum zwischen jedem Feld durch Komma-Trennzeichen ersetzen. Könnte mir jemand sagen, wie ich das tun kann?.

My command:
:%s//,/


53 51097 310780 1
56 260 1925 1
68 51282 278770 1
77 46903 281485 1
82 475 2600 1
84 433 3395 1
96 212 1545 1
163 373819 1006375 1
204 36917 117195 1
16
Teja

Wenn Sie über sed sprechen, funktioniert dies:

sed -e "s/ /,/g" < a.txt

Verwenden Sie in vim dieselbe Regex zum Ersetzen:

s/ /,/g
31
mvp

In vim möchten Sie im normalen Modus (Befehlsmodus) eingeben:

:%s/ /,/g

Auf der Terminal-Eingabeaufforderung können Sie sed verwenden, um dies für eine Datei auszuführen:

sed -i 's/\ /,/g' input_file

Hinweis: Die -i-Option für sed bedeutet "direkte Bearbeitung", da dadurch die Eingabedatei geändert wird.

8
sampson-chen

Ich weiß, es ist nicht genau das, was Sie fragen, aber wenn Sie ein Komma durch einen Zeilenvorschub ersetzen, funktioniert dies hervorragend:

tr , '\n' < file
2
determinacy

Wenn Sie die Ausgabe am Terminal wünschen, dann 

$sed 's/ /,/g' filename.txt

Wenn Sie jedoch die Datei selbst bearbeiten möchten d. H. wenn Sie das Leerzeichen durch das Komma in der Datei ersetzen möchten, 

$sed -i 's/ /,/g' filename.txt
1
Kumar Gaurav

Versuchen Sie den folgenden Befehl und es sollte für Sie klappen.

sed "s/\s/,/g" orignalFive.csv > editedFinal.csv

Ich habe gerade bestätigt, dass:

cat file.txt | sed "s/\s/,/g"

ersetzt erfolgreich Leerzeichen durch Kommas in Cygwin-Terminals (Mintty 2.9.0). Keine der anderen Proben hat für mich funktioniert.

1
xiphos71

Wenn Ihre Daten eine beliebige Folge von Leerzeichen (Tabulator, Leerzeichen) enthalten und Sie jede Folge durch ein Komma ersetzen möchten, verwenden Sie Folgendes:

sed 's/[\t ]+/,/g' input_file

oder 

sed -r 's/[[:blank:]]+/,/g' input_file

Wenn Sie die Folge von Leerzeichen, die andere Zeichen wie Wagenrücklauf und Rücktaste usw. enthält, ersetzen möchten, verwenden Sie Folgendes:

sed -r 's/[[:space:]]+/,/g' input_file
0
H.Alzy