Remplacer une chaine de caractère entre 2 mots

Résolu
yilmaz2189 -  
 yilmaz2189 -
Bonjour,
Dans un fichier texte je voudrai remplacer tout ce qui se trouve entre select et from par * par exemple :
select T1.TIMESTAMP, T1.M_IDENTITY, T1.M__TYPE_, T1.M__INTID_, T1.M_REFERENCE, T1.M_INST_TYPE, T1.M_PACK_INTID from CONTRACT_DBF T1 where T1.M_REFERENCE = 55116
Je souhaite que ça devienne select * from CONTRACT_DBF T1 where T1.M_REFERENCE = 55116
Pour information j'ai dèja pas mal chercher sur google et dans le man de sed mais rien à faire rien ne fonctionne
Merci d'avance à tout le monde

1 réponse

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    $ echo $var
    select T1.TIMESTAMP, T1.M_IDENTITY, T1.M__TYPE_, T1.M__INTID_, T1.M_REFERENCE, T1.M_INST_TYPE, T1.M_PACK_INTID from CONTRACT_DBF T1 where T1.M_REFERENCE = 55116
    
    $ echo $var | sed 's/\(select \).*from/\1*/'
    select * CONTRACT_DBF T1 where T1.M_REFERENCE = 55116
    
    $ 

    1
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Oups je n'avais pas vu qu'il fallait aussi garder le "from" ;-((

      $ echo $var | sed 's/\(select \).*\( from \)/\1*\2/'
      select * from CONTRACT_DBF T1 where T1.M_REFERENCE = 55116
      
      $ 
      0
    2. yilmaz2189
       
      hee bas ça, c'est du rapide et parfait en plus oneshot, ça fonctionne nickel. Je sais pas ce que j'aurai fais sans toi merci beaucoup :)
      0