Si vous voulez :
ajoutez ceci au script existant.
Vous pouvez insérer des \"\" supplémentaires dans chaque argument de print comme ceci :
print "\"admin\"", "\"base\"", ...
Modifié :
Oui, peut-être que définir OFS est une meilleure solution :
BEGIN { OFS="\";\""; } ... print "\"admin", ...., "simple\"";
awk '{for (i=1;i<=NF;i++) $i="\""$i"\""}1' FS=";" OFS=";" input
Pour ajouter des guillemets autour des entrées, vous pouvez utiliser une simple boucle AWK :
Script - simple_loop.awk
BEGIN {FS=";"}
{
for(i=1;i<NF;i++){
printf("\"%s\";", $i);
}
printf("\"%s\"\n",$NF);
}
Par exemple
echo "admin;base;5.11 HOLSTER SHIRT L WHITE;;" | awk -f simple_loop.awk
Devrait sortir
"admin";"base";"5.11 HOLSTER SHIRT L WHITE";"";""
Dans ce cas, j'utiliserais un sed expression au lieu de AWK.
Si vos données se trouvent dans un fichier nommé data.txt , vous pouvez le faire écrire :
sed "s/;/\";\"/g;s/^/\"/;s/$/\"/" data.txt
Cela imprimera le résultat sur la sortie std, mais si vous souhaitez remplacer le contenu du fichier, utilisez simplement sed -i de cette façon :
sed -i "s/;/\";\"/g;s/^/\"/;s/$/\"/" data.txt
Et c'est tout !!
Explication : Le sed expression consiste en trois sed commandes séparées par ";" que vous pouvez exécuter séparément :
sed "s/;/\";\"/g
Il fait une substitution (c'est ce que signifie le premier "s"), puis le "/" (le séparateur par défaut), ";" c'est ce que nous voulons remplacer. Puis le deuxième séparateur "/", et le remplacement :\";\" C'est une séquence :guillemet échappé, un point-virgule et un guillemet échappé. Donc avec cette commande nous remplacerons les points virgules ; par ";" . Le dernier /g signifie que chaque ; sera remplacé (pas seulement le premier point virgule).
Si l'entrée était a;b;c après avoir exécuté la première commande, ce sera a";"b";"c .
Maintenant, nous devons ajouter des guillemets au début (^ dans une expression régulière) et à la fin ($ ). Voilà donc ce que cela signifie :
sed "s/^/\"/" // the first quote
Et
sed "s/$/\"/" // the last quote
Obtenir le résultat souhaité :
"a";"b";"c"