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"