Partage
  • Partager sur Facebook
  • Partager sur Twitter

[bash] commande sed incontrôlable. help

problème avec la commande sed

    28 avril 2017 à 12:47:54

    Bonjour à tous,

    j'ai un petit problème avec la commande sed.

    j'ai un fichier texte nommé radis.txt

    salut
    wesh
    yo
    bien
    gros radis
    viva el kabir
    slup
    wesh
    gros radis
    la vie
    tout ca

    Avec la commande sed, je voudrais remplacer uniquement la deuxième occurrence (ou dernière) de "gros radis" par " replaced.

    J'ai essayé ces commandes:

    sed -e 's/gros radis/replaced/' radis.txt
    sed -e 's/gros radis/replaced/2' radis.txt
    sed -e 's/gros radis/replaced/2g' radis.txt
    sed -e 's/\(.*\)gros radis/\1replaced/' radis.txt

    La 1ère et la quatrième me remplace les deux occurrences de "gros radis" par "replaced", or je veux que la deuxième.

    Et la deuxième et 3eme commande ne me remplace rien du tout.

    Si quelqu'un aurait une idée et pouvait m'aider ca serait super simpa.

    Merci d'avance et bonne journée.

    • Partager sur Facebook
    • Partager sur Twitter

    Find various resources, tuturials and online tools at: https://finseckto.com

      28 avril 2017 à 14:59:59

      Salut,

      pourquoi mettre l'option -e ?

      sed '0,/gros radis/! s/gros radis/replaced/' radis.txt

      -
      Edité par darosior 28 avril 2017 à 15:00:24

      • Partager sur Facebook
      • Partager sur Twitter
      Pour les lyonnais qui utilisent les tcl --> BonPlanBus
        28 avril 2017 à 15:05:35

        salut,

        sed ':a; $!{N;ba}; s/\n/µ/g; s/µgros radisµ/µreplacedµ/2; s/µ/\n/g'

        ta mission, si tu l'acceptes, est d'interpréter ces commandes. ;)

        • Partager sur Facebook
        • Partager sur Twitter

        Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

          3 mai 2017 à 1:17:40

          Ah merci pour les reponses. Ca marche niquel.

          J'etais parti sur une solution avec awq un petit peu a l'arrache mais comme awq ne contient pas la fameuse option -i ca m'embetait un peu.

          *Darosior :  oui tu as raison, je pensais que la subtitution etait aussi une commande mais enfait ca marche tres bien sans. J'ai pas bien compris la commande mais jsuis un peu naze en sed, mais merci encore  : )

          "*Dantonq :  la ca m'a bien fait reflechir quelques heures XD. La premiere partie aucune idee eheh, et pour le reste tu remplace tous les sauts de ligne par des "mu" ce qui aparament fait fonctionner le fameux s/../2 etant donné que (ce que je navais pas compris enfait) cela compte et subtitue sur la ligne et non sur la colonne. Et enfin tu re-remplace les "mu" par des sauts de ligne. Pas bete. Par contre le début....aucune idee XD

          • Partager sur Facebook
          • Partager sur Twitter

          Find various resources, tuturials and online tools at: https://finseckto.com

            3 mai 2017 à 10:08:54

            b est une commande de boucle, et a une étiquette quelconque à partir de où reprendre la boucle

            les deux-points sont un indicateur d'étiquette (là où reprendre une boucle)

            $ est la fin du fichier

            ! est une négation

            N ajoute la ligne au tampon de l'espace de travail

            • Partager sur Facebook
            • Partager sur Twitter

            Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

            [bash] commande sed incontrôlable. help

            × 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