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 27/02/2019, à 19: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, à 20: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, à 13:55

Thorbjorn

Re : Suppression avec la commande Sed

Ca marche, merci beaucoup! J'en reviens pas de pas avoir tester ça avant... hmm
Au cas où y a pas des choses trop moches dans mon code?? histoire de l’améliorer un peu si possible! wink

Hors ligne

#4 Le 28/02/2019, à 14: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, à 15:35

Thorbjorn

Re : Suppression avec la commande Sed

Merci beaucoup pour votre aide ça ma pas mal aidé! smile

Hors ligne