Partage
  • Partager sur Facebook
  • Partager sur Twitter

mémorisation dans une regex

sélectionner des morceaux d'une recherche et les enregistrées

Sujet résolu
    14 septembre 2018 à 17:57:18

    Bonjour

    Je voudrais pouvoir mémoriser des parties d'une regex pour m'en resservir plus tard.

    Exemple dans un fichier liste.txt j'ai :

    abc 123

    J'aimerais pouvoir mémoriser des sélections, avec les () si j'ai bien compris et écrire un truc du genre:

    egrep '(\w{3}) (\d{3})' -f liste.txt

    Donc une sélection pour abc l'autre pour 123

    Puis par la suite envoyer ces 2 sélections dans un fichier, genre \1>nom.txt \2>numero.txt

    Comment je fais ? Y'a une autre commande que grep qui le permettrais?

    ------------------------------

    En résumé je veux pouvoir parcourir un fichier avec une regex (car les sélections sont compliqués) et en sortir des morceaux dans des fichiers séparés... D'ailleurs, en langage Shell ou powershell.

    Merci beaucoup :D

    -
    Edité par AD4 14 septembre 2018 à 18:20:54

    • Partager sur Facebook
    • Partager sur Twitter
      14 septembre 2018 à 18:50:01

      salut,

      oui, en bash :

      var='abc 123'; rgx='([a-Z]{3}) ([0-9]{3})'; [[ $var =~ $rgx ]] && echo "${BASH_REMATCH[1]}"



      • Partager sur Facebook
      • Partager sur Twitter

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

        14 septembre 2018 à 20:38:14

        Merci de ta réponse.

        Ca fonctionne uniquement pour un fichier d'une ligne.

        Comment j'affiche toute les correspondances du 1er match de mémorisation par exemple?

        -
        Edité par AD4 14 septembre 2018 à 20:38:38

        • Partager sur Facebook
        • Partager sur Twitter
          14 septembre 2018 à 21:03:59

          oui, il faut lire le fichier en shell/bash, et enregistrer/ajouter chaque résultat dans un tableau !
          • Partager sur Facebook
          • Partager sur Twitter

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

            14 septembre 2018 à 21:36:18

            Pour lire le fichier je peut faire un

            $var=`cat fichier.txt`

            Mais comment j'ajoute chaque résultats des matchs?

            • Partager sur Facebook
            • Partager sur Twitter
              14 septembre 2018 à 21:54:29

              oula!
              while read line; do echo "> $line"; done <fichier
              il faut impérativement et urgemment lire les tutos du site relatifs au shell !

              -
              Edité par dantonq 14 septembre 2018 à 21:55:25

              • Partager sur Facebook
              • Partager sur Twitter

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

                14 septembre 2018 à 21:55:21

                Bonsoir,

                while read line; do
                echo $line
                done < fichier

                Lit le fichier ligne par ligne.

                EDIT: trop rapide dantonq! :(

                -
                Edité par KoaTao 14 septembre 2018 à 21:56:20

                • Partager sur Facebook
                • Partager sur Twitter
                  14 septembre 2018 à 22:00:32

                  Merci pour vos réponses mais du coup je suis perdu, je vois pas du tout comment incorporé ce while avec le 1er bash que m'a montré dantonq.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    14 septembre 2018 à 22:05:13

                    Oublions bash deux secondes.

                    Tu sais que tu peux lire le fichier ligne par ligne dans une boucle. A quoi ressemblerait ton algo en langage naturel?

                    • Partager sur Facebook
                    • Partager sur Twitter
                      14 septembre 2018 à 22:27:17

                      je suis perdu

                      lis les tutos du site relatifs au shell !!!

                      Reprenez le contrôle à l'aide de Linux !

                      • Partager sur Facebook
                      • Partager sur Twitter

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

                        14 septembre 2018 à 22:28:14

                        Je veux sélectionner de toutes petites parties dans des lignes biens spécifiques d'un fichier HTML pour renommer des fichiers ensuite grâce à cela.

                        Donc là vu que j'arrive pas à me servir des captures groupes des regex ou du BASH_REMATCH, j’essaye de découper le résultat total de ma commande grep des cut...

                        -
                        Edité par AD4 14 septembre 2018 à 22:43:23

                        • Partager sur Facebook
                        • Partager sur Twitter
                          14 septembre 2018 à 22:45:32

                          le shell n'est pas un bon outil pour parser du HTML.
                          utilie plutôt Python et BeautyfulSoup.
                          • Partager sur Facebook
                          • Partager sur Twitter

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

                            15 septembre 2018 à 17:06:23

                            J'ai fini par trouver, donc je poste ici si quelqu'un tombe sur ce sujet un jour:

                            #! /bin/bash
                            rgx='maregex'
                            while read line; do
                            	if
                            	[[ $line =~ $rgx ]]; then
                            	echo "${BASH_REMATCH[1]}" >> match1.txt
                            	echo "${BASH_REMATCH[2]}" >> match2.txt
                            	fi
                            done < monfichier

                            C'est assez long en temps de traitement mais au moins ça fonctionne.
                            Merci.

                            -
                            Edité par AD4 15 septembre 2018 à 17:07:17

                            • Partager sur Facebook
                            • Partager sur Twitter

                            mémorisation dans une regex

                            × 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