La commande sed

je veux supprimer une ligne de fichier .txt avec le shell j’utilise cette commande mais ça marche pas ??? aidez moi :'(

echo "saisissez le nom que vous voulez supprimer"
read name
$GREP -i $name f.txt
#if [ $? == 0 ]
#then
#echo "$name, existe"

sed -i 's/^$name /d' ./f.txt

3 réponses

  1. Bonjour,
    s'il vous plaît,
    merci.

    « ça marche pas »
    pourquoi ? il lui manque un pied ? c'est une table ? c'est sur roulette ?
    ptdr
    0
    1. Contributeur
      sed -i '/^$name /d' ./f.txt
      ça fonctionnerai pas ?
      0
      1. non, parce que la variable ne peut pas être développée.
        0
      2. Contributeur
        sed -i "/^$name /d" ./f.txt
        alors ?
        0
      3. Contributeur
        @Char SnipeurSalut,

        Oui, mais non ;-)

        Je m'explique, enfin l'explication est là plutôt.

        Exemple :
        $ cat fich    # Le contenu du fichier
        bonjour
        salut
        hello
        hola
        hi

        $ var="h" # Initialisation variable

        $ sed "/${var}/d" fich # On supprime les lignes contenants un "h"
        bonjour
        salut

        $ sed "/${var}/!d" fich # On ne veut que celles ayants un "h"
        sed "/${var}/df -hT " fich
        sed: -e expression n°1, caractère 5: caractères inutiles après la commande

        $ sed '/'"${var}"'/!d' fich # La bonne syntaxe
        hello
        hola
        hi
        0
      4. ou alors, on ajoute un espace :
        sed "/$var/! d" fich
        0