2016-07-23 34 views
0

Ich versuche, alle ,, durch ,?, in einer CSV-Datei mit vi-Editor zu ersetzen. Ich führe den Befehl:Ersetzen Sie Nullwerte durch '?' in einer csv-Datei (vi-Editor)

sed -i 's/^,/?,/' -i 's/,,/,?,/g' -i 's/,$/,?/' <filename> 

aber der Befehl macht es nicht richtig. Weiß jemand, wie ich den Befehl ändern sollte, damit er alle ,, durch ,?, ersetzt? Vielen Dank!

+0

Dies könnte ein Duplikat sein. Überprüfen Sie den Link. http://stackoverflow.com/questions/5688231/how-to-replace-null-valuefield-with-word-on-csv-file –

+0

Hier ist ein weiterer Link zu der gleichen Art von Frage. http://StackOverflow.com/Questions/6431573/Replacing-Conscrectively-Empty-Values-in-Acsv-file –

+0

Sourced aus dem zweiten Link geschrieben. Dies funktioniert auf dem Online-Emulator (Änderungen vorgenommen): echo 'value, value ,,, value, value' | sed -r 's/(^ |,) (, | $)/\ 1? \ 2/g; s/(^ |,) (, | $)/\ 1? \ 2/g' –

Antwort

0

Sie können unter Befehl ausführen, um die globale Suche zu tun und ersetzen

syntax - :%s/search_string/replacement_string/g 
:%s/\,\,/\,?\,/g 
+0

Ich laufe das auch. Es macht nicht was ich will. Ich habe noch einige ,,? ,, im Ergebnis. – geek2000

+0

Bitte überprüfen Sie die zweite Zeile, die es für mich funktioniert –

+0

Die Ausgabe enthält? ,,? ,,? ,, was falsch ist. Ich kann nicht haben ,, ! – geek2000

0

du im Terminal ausführen kann, um die gewünschte Ausgabe zu erhalten:

sed -i 's/^,/?,/; s/,,/,?,/g; s/,$/,?/' <filename> 
+0

Ich habe noch,? ,,? ,,? ,, Art von Ersatz in meiner Ausgabe. – geek2000