Partage
  • Partager sur Facebook
  • Partager sur Twitter

supprimer une ligne dans un fichier

Script bash

Sujet résolu
    1 octobre 2015 à 13:40:56

    Bonjour, 

    j'ai un fichier dont le contenu est : 

    ligne 1
    ligne 2
    ligne 3 
    ligne 4
    ligne 5

    pour supprimer une ligne spécifique dans un fichier , j'utilise la commande : 

    sed '3d' /home/User/Bureau/Test.txt

    ce qui m'affiche sur le terminal : 

    ligne 1
    ligne 2
    ligne 4
    ligne 5

    mais lorsque j'ouvre mon fichier Test.txt , rien n'est supprimé !!!!

    Merci de m'aider sur ce problème  

    -
    Edité par adrouliop 1 octobre 2015 à 13:41:34

    • Partager sur Facebook
    • Partager sur Twitter
      1 octobre 2015 à 13:58:19

      Bonjour,

      Alors effectivement, avec cette commande "sed" te supprime la ligne lors de l'affichage, mais pas dans ton fichier, car tu ne lui demandes pas.

      Si tu veux que ce que tu vois sur ton terminal soit placé dans ton fichier tu peux placer un redirecteur de flux.

      Exemple :

      sed '3d' /home/User/Bureau/Test.txt > /home/User/Bureau/Test.txt

      '>' te permet d'écraser le contenu de ton fichier avec la commande placé devant. Pour information '>>' te permet de placer le contenu à la suite.

      • Partager sur Facebook
      • Partager sur Twitter
        1 octobre 2015 à 15:01:53

        La commande que tu m'a donné a supprimé totalement toute les lignes du fichier :( 

        Mon fichier d'origine est très long et je veux pas qu'il soit affiché dans le terminal, est ce qu'il existe pas une méthode qui permet de supprimer les dernieres lignes d'un fichier autre que ceci !!!! 

        Merci d'avance 

        -
        Edité par adrouliop 1 octobre 2015 à 15:12:16

        • Partager sur Facebook
        • Partager sur Twitter
          1 octobre 2015 à 15:28:52

          Bonjour

          # supprimer la première ligne
          sed -i '1d' ton_fichier



          Normal qu'avant ça ne marchait pas, sed ne modifie pas nativement, il procède dynamiquement aux modifications soumises seulement en affichage. Pour préserver les modifications, l'option (insertion) permet de modifier véritablement le fichier.

          Tu peux mettre un intervalle

          # efface de la ligne 1 à 5
          
          sed -i '1,5d' ton_fichier


          -
          Edité par Mobius00 1 octobre 2015 à 15:32:15

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            1 octobre 2015 à 15:55:00


            Coucou, le ">"  est équivalent à "1>" il sert à rediriger les flux du file descriptor 1 vers un un autre flux, en l’occurrence un fichier mais ça t'écrasera son contenu initial et si il 'existe pas il est automatiquement créé.

            Si tu veux rediriger t'es flux sans écraser le contenu de ton fichier tu dois utiliser la notation ">>" ou "1>>"
            Si tu veux rediriger plusieurs résultats de cmd tu peux utiliser la notation (cmd 1; cmd2; ...) >/>> file ex :

            ( ls *.c ; pwd ) > file

            Si tu veux pas voir les erreurs tu fais

            cmd 2> /dev/null

            Si tu veux rien voir sur stdout tu fais simplement

            cmd 1> /dev/null

            Et si tu veux analyser le résultat d'une commande sans passer par un fichier tu peux utiliser les pipelines |

            ls -l | grep -c *.c






            -
            Edité par Anonyme 1 octobre 2015 à 16:03:21

            • Partager sur Facebook
            • Partager sur Twitter
              1 octobre 2015 à 16:33:43

              ça marchait , merci  les amis :D
              • Partager sur Facebook
              • Partager sur Twitter

              supprimer une ligne dans un fichier

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown