[BASH]effacer d'un délimiteur à un autre

Résolu
Iroboot -  
 Iroboot -
Bonjour,

Voila j'ai un petit soucis : j'ai commencé a préparer un script en BASH dont le but est d'effacer. Jusque la rien de particulier mais c'est à dire qu'il doit effacer d'un certain délimiteur à un autre tout à fait différent, je m'explique :

j'ai un fichier suivant :

nom.txt :

#jean toto
user = jeant {
blablabla
}

#Michelle tata
user = michelle tata {
blablabla
}

#rené titi
user = renet {
blablabla
}


j'ai un fichier contenant :

adetruire.txt :

jeant
renet


et j'aimerai effacer de "user" à "}" pour me retrouver avec :

nom2.txt :

#jean toto

#Michelle tata
user = michelle tata {
blablabla
}

#rené titi


Donc j'aimerai effacer tout (en comparant les deux fichiers) du "user" au "}"
j'ai déjà commencé à faire un script mais le seul soucis est qu'il m'efface que la ligne avec user :( je vous le donne :

monscript.sh :

#! /bin/bash

#set -x

while read line
do

commande2="sed -i '/$line/d' nom2.txt"
eval $commande2

done < nom.txt


PS : il y a une longue partie avant, ce n'est qu'un bout du script car je dois plusieurs opérations, prévenez moi si mon script vous semble incomplet pour effectuer cela ;) (si mon script vous semble improbable et ne marche pas etc ...)

Merci d'avance a tous :D.

3 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    [tmpfs]$ cat nom.txt
    #jean toto
    user = jeant {
    blablabla
    }
    
    #Michelle tata
    user = michelle tata {
    blablabla
    }
    
    #rené titi
    user = renet {
    blablabla
    }
    
    [tmpfs]$ cat adetruire.txt
    jeant
    renet
    
    [tmpfs]$ cat foo.sh
    #! /bin/sh
    
    #set -xv
    
    while read line
    do
    sed -i "/${line}/,/\}/d" nom.txt
    done < adetruire.txt
    
    [tmpfs]$ ./foo.sh
    
    [tmpfs]$ cat nom.txt
    #jean toto
    
    #Michelle tata
    user = michelle tata {
    blablabla
    }
    
    #rené titi
    
    [tmpfs]$ 
    ;-))
    2
  2. Iroboot
     
    Merci beaucoup :D j'étais en train de tester avec le tutoriel sur SED (que tu as édité il me semble ;) ) et la fonction qui efface entre deux motifs ... Fallait faire un mélange de cela avec ma fonction XD.

    Merci beaucoup problème résolu :D
    1