• # Awk & Sed

    Posté par  . Évalué à 2.

    Tu pourrais le faire grâce au couple Awk & Sed

    Ma recherche google me donne ce lien pour en apprendre plus !

    • [^] # Re: Awk & Sed

      Posté par  (site web personnel) . Évalué à 4.

      Regexxer propose une interfaçage graphique, qui permet de sélectionner les changements au cas par cas. Pratique aussi

      • [^] # Re: Awk & Sed

        Posté par  . Évalué à 1.

        Merci, j'ai essayé Regexxer mais ça a freezé…

        arnauld

    • [^] # Re: Awk & Sed

      Posté par  . Évalué à 1.

      Vu qu'il faut pouvoir analyser un dossier et son contenu, il faudra peut-être y ajouter find s'il y a des sous-dossiers dans le dossier.

      • [^] # Re: Awk & Sed

        Posté par  (site web personnel) . Évalué à 1.

        J'allais proposer un mix find + sed.

        Pour être didactique on pourrait find, puis grep, puis sed (mais no need, sed intègre son propre grep).

        Proverbe Alien : Sauvez la terre ? Mangez des humains !

  • # c'est un peu vague comme énoncé

    Posté par  . Évalué à 3.

    Tu pourrais être plus précis sur l'exercice : format de fichier en entré, exemple de cas (exemple quoi)

    Car la simplement comme logiciel :

    on a emacs qui fait tout

    perl si tu veux un truc plus user friendly ;)

    ou comme dit plus haut une articulation bash autour de sed

    Il ne faut pas décorner les boeufs avant d'avoir semé le vent

    • [^] # Re: c'est un peu vague comme énoncé

      Posté par  . Évalué à 2. Dernière modification le 04 juin 2019 à 16:21.

      Tu pourrais être plus précis sur l'exercice : format de fichier en entré, exemple de cas (exemple quoi)

      Oui, en effet.

      J'ai un blog statique et je change de domaine. Je me retrouve donc avec des fichiers de configuration du blog, des fichiers .html, des fichiers .md, etc.

      Plutôt que de changer mon ancien nom de domaine qui apparait dans chacun des fichiers je cherche une solution pour scanner tous les dossiers, sous-dossiers, fichiers et changer le nom de domaine par un autre.

      Je m'aperçois cependant que le temps passé à chercher ce logiciel aurait été suffisant à tout changer à la main… :-)

      arnauld

      • [^] # Re: c'est un peu vague comme énoncé

        Posté par  . Évalué à 7. Dernière modification le 04 juin 2019 à 16:37.

        rapidement

        sed -r 's/monNomDeDomaine[.]fr/monNouveauNomDeDomaine.org/g' -i.old $(find -iname '*html' -or -iname '*md')

        en gros va remplacer toutes les chaines monNomDeDomaine[.]fr par monNouveauNomDeDomaine.org dans tous les fichier se terminant par html ou md.

        dans le cas où tu aurais des / dans les noms à repplacer, il vaut mieux uiliser # comme séparateur de champs, donc

        sed -r 's#monNomDeDomaine[.]fr#monNouveauNomDeDomaine.org#g' -i.old $(find -iname '*html' -or -iname '*md')

        le -i.old permet de ne pas perdre les fichier d'origines, ils seront simplement renommé en .old

        -i tout court va modifier les fichiers sans sauvegarde :)

        le [.] dans la première partie permet de ne pas interpréter le . (dans une regEx, le . désigne n'importe quel caractère ) ou plus précisément [.] prends un caractère dans la liste des caractères entre les [] ici il n'y a que le . certains utilisent ., mais ça devient vite le bordel, notamment quand on inclue des chaines de caractères dans les autres.

        Il ne faut pas décorner les boeufs avant d'avoir semé le vent

        • [^] # Re: c'est un peu vague comme énoncé

          Posté par  . Évalué à 1.

          Merci, je vais voir ça ce soir.

          arnauld

          • [^] # Re: c'est un peu vague comme énoncé

            Posté par  . Évalué à 2.

            Honnêtement, ça aide beaucoup de connaitre le besoin (en plus d'écarter les éventuels 'faites mes devoirs', ou 'faites mon job')

            Une autre solutions (sans ligne de commande), c'est ouvrir tous les fichiers dans un éditeur et de faire un remplacer dans tous les fichiers; certains éditeurs le permettent, mais ça va dépendre du nombre de fichiers et de leur taille ;)

            Il ne faut pas décorner les boeufs avant d'avoir semé le vent

        • [^] # Re: c'est un peu vague comme énoncé

          Posté par  . Évalué à 2.

          Salut,
          J’utilise souvent l’option -i, je fais confiance à la gconf pour vérifier le diff et revenir en arrière.
          Merci beaucoup de m’avoir appris le -i.toto qui me servira sûrement un jour.

          Merci encore.

        • [^] # Re: c'est un peu vague comme énoncé

          Posté par  . Évalué à 2.

          sed -r 's#monNomDeDomaine[.]fr#monNouveauNomDeDomaine.org#g' -i.old $(find -iname '*html' -or -iname '*md')

          Ou encore

          find -iname '*html' -or -iname '*md' | xargs sed -r 's#monNomDeDomaine[.]fr#monNouveauNomDeDomaine.org#g' -i.old

          Ça évite de lancer un sous-shell et de saturer l'espace de la ligne de commande si le nombre de fichiers correspondants est trop important.

      • [^] # Re: c'est un peu vague comme énoncé

        Posté par  (site web personnel) . Évalué à 4.

        On ne perds jamais de temps à écrire un oneliner sed :o)

        Proverbe Alien : Sauvez la terre ? Mangez des humains !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.