Bonjour à tous.
Ma problématique, c'est modifier un fichier sql via awk :
Je souhaite harmoniser tous les champs et les noms de table en minuscule. Concrêtement mettre en minuscule toutes les chaines avec la syntaxe `ABC` ou `_ABC` ou `A_BC` ou `ABC_`, etc
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SET FOREIGN_KEY_CHECKS=0; CREATE TABLE `AUTOTASK` ( `ID_AUTOTASK` varchar(30) NOT NULL, `var_name` varchar(30) NOT NULL, PRIMARY KEY (`id_autotask`,`var_name`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `autotask` VALUES ('1HOUR_AUTOTASK.PHP', 'BASETIME');
Il parait que c'est simple avec l'outils awk (j'utilise une version java jawk qui répond exactement à la même syntaxe).
Mon expression rationnelle fonctionne, j'y suis presque avec le script :
Voici le résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 { if (gsub(/\`[A-Z,_]*\`/,tolower($0), $0)==1) {print $0;} else {print;} }
Je constate que gsub m'insère la ligne entière (en rouge) au lieu de lu mot détecté. Je pense que mon print $0 ne doit pas être bon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SET FOREIGN_KEY_CHECKS=0; CREATE TABLE create table `autotask` ( ( `id_autotask` varchar(30) not null, varchar(30) NOT NULL, `var_name` varchar(30) NOT NULL, PRIMARY KEY (`id_autotask primary key (`id_autotask`,`var_name`)var_name`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `autotask` VALUES ('1HOUR_AUTOTASK.PHP', 'BASETIME');
Y a des connaisseurs qui peuvent m'aider ?
Merci.
Partager