Je veux ajouter une colonne (2e place) dans un .csv
fichier et je veux que les valeurs de cette colonne soient des chaînes et soient citées;
La commande suivante ajoute la colonne mais sans guillemets:
awk -F"," 'BEGIN { OFS = "," } {$2="2.4.0"; print}' test.csv > output.csv
L'approche suivante incorpore les guillemets, mais pour une raison quelconque, elle supprime le dernier .
(point) de la valeur
awk -F"," 'BEGIN { OFS = "," } {$2="\""2.4.0"\""; print}' test.csv > output.csv
donc mes valeurs finissent par être "2,40".
Comment dois-je procéder?
Réponses:
Vous semblez vous être trompé. Vous devez faire comme ci-dessous
Ceci est expliqué dans la page de manuel GNU awk - 3.2 Séquences d'échappement
En ce qui concerne la raison pour laquelle j'ai pu comprendre la raison du comportement,
awk
semble s'être interprété2.4.0
comme un mot numérique avec les guillemets supplémentaires de votre OP et décide de perdre la précision après le premier point.c'est à dire
devient juste
qui
awk
ne comprend plus comme une chaîne. Vous pouvez reproduire ce comportement en faisant simplementqui se trouve être le résultat lorsque vous faites
la source
{ print 2.4.0 }
ou{ print 2.4.0 + 0 }
, c'est-à-dire en tant que constituant non-chaîne. J'ai aussi essayé de rechercher des documents pertinents, mais je n'ai pas puawk -v q='"' '... print q "2.4.0" q ...