Pages : 1
#1 Le 27/02/2019, à 18:53
- Thorbjorn
Suppression avec la commande Sed
Je suis en train d'essayer de coder une todo list, mais je n'arrive pas à supprimer une tâche lorsque celle ci comprend plusieurs mots...
voici le code :
case $1 in --list) cat todo.txt ;; --done) grep -c "$2" todo.txt >> tmp.txt read b < tmp.txt case $b in 0) echo "tâche innexistante" ;; 1) sed -i '/'$2'/d' todo.txt ;; *) echo "donner plus de précisions sur la tâche" ;; #proposer à l'utilisateur les differentes tâches numéroté esac rm tmp.txt ;; *) a="date +%d/%m/%y_à_%Hh%M" echo -n "$1 -- ajouté le " >> todo.txt $a >> todo.txt ;; # *) echo 'argument invalide' ;; esac
Lorsque je rentre dans le terminal : todo -- done "tache à effacer" et que celle ci comporte plusieurs mots, cela me renvoie systématiquement :
sed: -e expression n°1, caractère 4: expression régulière d'adresse inachevée
Si quelqu'un à une idée d'où vient l'erreur je suis preneur !
Merci bien!
Hors ligne
#2 Le 27/02/2019, à 19:00
- pingouinux
Re : Suppression avec la commande Sed
Bonjour,
Essaye ceci
1) sed -i "/$2/d" todo.txt
Hors ligne
#3 Le 28/02/2019, à 12:55
- Thorbjorn
Re : Suppression avec la commande Sed
Ca marche, merci beaucoup! J'en reviens pas de pas avoir tester ça avant...
Au cas où y a pas des choses trop moches dans mon code?? histoire de l’améliorer un peu si possible!
Hors ligne
#4 Le 28/02/2019, à 13:27
- pingouinux
Re : Suppression avec la commande Sed
Tu peux essayer ceci, mais si tu veux supprimer une tâche, et que d'autres portent exactement le même nom, elles seront toutes supprimées.
case "$1" in
--list) cat todo.txt ;;
--done) if grep -qw "$2" todo.txt; then
sed -i "/^$2 /d" todo.txt
else
echo "tâche inexistante"
fi ;;
*) date +"$1 -- ajouté le %d/%m/%y_à_%Hh%M" >> todo.txt ;;
esac
Hors ligne
#5 Le 28/02/2019, à 14:35
- Thorbjorn
Re : Suppression avec la commande Sed
Merci beaucoup pour votre aide ça ma pas mal aidé!
Hors ligne