Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/05/2022, à 14:48

Alarch

[Résolu] Sed Regex Insérer une ligne avant une autre

Bonjour,
mon problème est simple, sqlite ne sait pas insérer un DROP TABLE IF EXISTS `nomtable`; avant le CREATE TABLES IF NOT EXISTS `nomtable` (

je voudrais donc le rajouter à la volée avec sed dans le dump. Pour cela j'ai essayé :

sed '/CREATE TABLE IF NOT EXISTS\(.*\).*(/i DROP TABLE IF EXISTS \1;' dumpdb.sql 

Mais le résultat est :

DROP TABLE IF EXISTS 1;
CREATE TABLE IF NOT EXISTS "T_CORP_COR" (

Donc le \1 n'est pas traité comme le contenu de la parenthèse capturante mais littéralement.
Est-ce une mauvaise syntaxe de ma part ou le contenu de \(.*\) ne peut pas être récupéré dans ce cas ?  (pas de sed s/)

Je peux bien entendu y arriver avec ça :

sed 's/CREATE TABLE IF NOT EXISTS \(.*\) (/DROP TABLE IF EXISTS \1;\nCREATE TABLE IF NOT EXISTS \1 (/' dumpdb.sql

Mais ça manque d'élégance.

Merci d'avance si quelqu'un peut répondre à la question

Dernière modification par Alarch (Le 28/05/2022, à 15:06)

Hors ligne

#2 Le 28/05/2022, à 14:56

Watael

Re : [Résolu] Sed Regex Insérer une ligne avant une autre

salut,

sed 's/CREATE TABLE IF NOT EXISTS \(.*\) (/DROP TABLE IF EXISTS \1;\n&/' dumpdb.sql

?


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 28/05/2022, à 15:03

Alarch

Re : [Résolu] Sed Regex Insérer une ligne avant une autre

Oui bonne idée !

On garde ainsi l'avantage des parenthèses capturantes. Je voulais à tout prix utilise le /i pour l'insertion au dessus, alors je me suis obnubilé sur cette syntaxe.

C'est plus compact que ma seconde solution.

Merci de ta raponse.

Hors ligne