remplacement via awk (jawk)
Bonjour à tous.
Ma problématique, c'est modifier un fichier sql via awk :
Code:
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'); |
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
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 :
Code:
1 2 3 4 5
|
{
if (gsub(/\`[A-Z,_]*\`/,tolower($0), $0)==1) {print $0;}
else {print;}
} |
Voici le résultat:
Code:
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'); |
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.
Y a des connaisseurs qui peuvent m'aider ?
Merci.