Ich möchte eine Spalte (2. Platz) in eine .csv
Datei einfügen und möchte, dass die Werte dieser Spalte Zeichenfolgen sind und in Anführungszeichen gesetzt werden.
Der folgende Befehl fügt die Spalte hinzu, jedoch ohne Anführungszeichen:
awk -F"," 'BEGIN { OFS = "," } {$2="2.4.0"; print}' test.csv > output.csv
Der folgende Ansatz enthält zwar die Anführungszeichen, entfernt jedoch aus irgendeinem Grund den letzten .
(Punkt) aus dem Wert
awk -F"," 'BEGIN { OFS = "," } {$2="\""2.4.0"\""; print}' test.csv > output.csv
Meine Werte sind also "2,40".
Wie soll ich das machen?
Antworten:
Sie scheinen die Zitate falsch verstanden zu haben. Sie müssen wie folgt vorgehen
Dies wird in der Manpage zu GNU awk - 3.2 Escape Sequences erläutert
Soweit der Grund, warum ich den Grund für das Verhalten verstehen konnte,
awk
scheint er2.4.0
als numerisches Wort mit den zusätzlichen Anführungszeichen aus Ihrem OP interpretiert worden zu sein und beschließt, die Genauigkeit nach dem ersten Punkt zu verlieren.dh
wird gerecht
was
awk
nicht mehr als String versteht. Sie können dieses Verhalten einfach reproduzierenwas zufällig das Ergebnis ist, wenn Sie dies tun
quelle
{ print 2.4.0 }
oder{ print 2.4.0 + 0 }
, dh als Nicht-String-Bestandteil, geführt zu haben. Ich habe versucht, nach relevanten Dokumenten zu suchen, konnte es aber nichtawk -v q='"' '... print q "2.4.0" q ...