szókeresés szövegbõl

Kezdőlap Fórumok Programozás szókeresés szövegbõl

10 bejegyzés megtekintése - 1-10 / 12
  • Szerző
    Bejegyzés
  • #2061701
    lada2105
    Felhasználó

      Egyáltalán nem tudod körülhatárolni az email címet?

      Tudsz esetleg egy részletet bemásolni?

      #2061702
      jzombi
      Felhasználó

        Erre talán használható a grep illetve az egrep:

        Code:
        $ egrep „[a-zA-Z0-9]+@[a-zA-Z0-9]+.[a-zA-Z0-9]+” ./*

        A végén a „./*” a fájlnév, ehelyet add meg a saját fájlod nevét (különben az összes adott könyvtárban található fájlban keresni fog). Ha esetleg több fájlban, rekurzívan szeretnél keresni, akkor a „-r” opciót is meg kell adni.

        #2061703
        uzsolt
        Felhasználó

          Az alapötlet jó, de apróbb gondok vannak vele:
          1) a h938777@stud.u-szeged.hu -t nem fogja kidobni (a „túl sok” pont miatt)
          2) aláhúzás-jel (meg még nemtom, mik) is lehetnek email-címben.
          Szóval szerintem a minta:

          „[a-zA-Z0-9_.]+[a-zA-Z0-9_]@[a-zA-Z0-9]+[a-zA-Z0-9._]+[a-zA-Z0-9]”

          Persze még a plusz egyéb karaktereket be kellene oda rakni, ahol aláhúzásjelek vannak. Lehet, hogy még ez se tökéletes, de több email-címet fog megtalálni.

          #2061704
          dotmind
          Felhasználó

            Köszi az ötletet, de az egrep is sorokra keres, szóval nem vagyok kint a vízbõl. Sajnos nem tudok példát mutatni, csak annyit, hogy egy beszkennelt, rossz minõségü omnipage-el szöveggé konvertált fájlról van szó. Az email címek már rendben vannak (tehát megfelelnek az alapformátumnak user@host , bár itt is lehetnek ugye pontok, kötõjelek, alulvonások. stb.).
            Viszont a mail címek szpészell teljesen el vannak különítve a sor többi részétõl (elõtte is utána is változó számú szpészek vannak, szóval es sem jó határolónak.). Tehát az kéne, hogy valamivel az email szintaktikájú szavakat ki tudjam szûrni.

            köszi

            #2061705
            uzsolt
            Felhasználó

              Tényleg, a kötõjel is! Hogy nem vettem észre (u-szeged).
              Ha egy sorban több is van, akkor szerintem sed a lelke (mindennek):
              a lényeg, hogy a nem e-mail-szerûségeket törölje. Valami ilyesmi lehet:

              sed „s/^( az_elõbb_írt_minta_kötõjellel_meg_mindennel)//g”

              Utána szerintem a szóközöket (a zárójel után szóköz van!) újsorra kellene cserélni, és akkor már meg is van 1email/sor. Persze lesz egy fölös sorod az elején, de ennyi szépséghiba kell 🙂

              #2061706
              dotmind
              Felhasználó

                hát nekem a sed is komplett sorokat talál meg, pedig nekem csak az email kéne a sorból.

                #2061707
                ELaci
                Felhasználó

                  Lehet még bonyolítani?

                  #2061708
                  Morzel
                  Felhasználó
                    ELaci wrote:
                    Lehet még bonyolítani?
                    #2061709
                    uzsolt
                    Felhasználó

                      Perl? Java? Mi a fenének?
                      Rájöttem egy tök egyszerû megoldásra: mit is keresünk? Kukacokat. A címek mikkel vannak szeparálva? Szóközökkel. Tehát: keressünk kukacokat (mint a horgászok), erre találták ki a grep-et. Ezután cseréljünk minden szóközt újsorra, ez a sed. Ezután még egyszer grep-pel megnézzük, melyik sorokban vannak még giliszták:

                      Code:
                      grep „@” lista.txt | sed „s/ /n/g” | grep „@”

                      Ha esetleg olyan email is van, hogy utána vesszõ van (pl. felsorolás), akkor még egy plusz szûrés a végére:

                      Code:
                      sed „s/[,.]$//”

                      Azért kíváncsi lennék a java-s megoldásra, hogy ilyen rövid-e 🙂

                      #2061710
                      dotmind
                      Felhasználó

                        Köszönöm ez a megoldás bevált!

                      10 bejegyzés megtekintése - 1-10 / 12
                      • Be kell jelentkezni a hozzászóláshoz.