[BASH]effacer d'un délimiteur à un autre
Résolu
Iroboot
-
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.
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.
A voir également:
- [BASH]effacer d'un délimiteur à un autre
- Comment effacer un iphone - Guide
- Comment effacer un compte gmail - Guide
- Effacer les données de navigation sur android - Guide
- Comment effacer une page word - Guide
- Comment recuperer un message effacé sur whatsapp - Guide
3 réponses
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]$ ;-))