Comment append des guillemets à la première ligne et aux deux premières colonnes (csv – ligne de commande)

Je me bats un peu parce que je dois append des guillemets à la première ligne et aux deux premières colonnes d’un fichier CSV, comme illustré ici:

Consortingbution

var1,var2,var3,var4 x1,x2,x3,x4 y1,y2,y3,y4 

Sortie:

 "var1","var2","var3","var4" "x1","x2",x3,x4 "y1","y2",y3,y4 

J’ai essayé pendant un moment maintenant, et la chose la plus proche de moi est:

 # add single quotes around columns of csv files sed "s/[[:alnum:]]*/'&'/g" input.csv >output1.csv # transform the single quotes into double quotes tr "'" '"'  output2.csv 

Mais cela met des guillemets autour de toutes les colonnes comme ceci:

 "var1","var2","var3","var4" "x1","x2","x3","x4" "y1","y2","y3","y4" 

Êtes-vous des utilisateurs de ligne de commande plus expérimentés, capables de m’aider?

Vous pouvez qualifier la substitution pour des numéros de ligne particuliers

 $ sed '1s/[^,]*/"&"/g; 2,$s/\([^,]*\),\([^,]*\)/"\1","\2"/' ip.txt "var1","var2","var3","var4" "x1","x2",x3,x4 "y1","y2",y3,y4 
  • 1s/[^,]*/"&"/g ajoute des guillemets à tous les champs de la première ligne
  • 2,$s/\([^,]*\),\([^,]*\)/"\1","\2"/ ajoutez des guillemets uniquement pour les deux premiers champs de la 2ème ligne à la fin du fichier