Reguláris kifejezések

Kezdőlap Fórumok Programozás Reguláris kifejezések

10 bejegyzés megtekintése - 21-30 / 39
  • Szerző
    Bejegyzés
  • #2131860
    uzsolt
    Felhasználó

      Hát, igen, a lényeg jól működik. Ez azt jelenti, hogy az előző hozzászólásom „akkor” utáni része lép érvénybe 🙁
      (valami csak lesz ezzel az equery-vel)

      #2131861
      uzsolt
      Felhasználó

        Hát, igen, a lényeg jól működik. Ez azt jelenti, hogy az előző hozzászólásom „akkor” utáni része lép érvénybe 🙁
        (valami csak lesz ezzel az equery-vel)

        #2131862
        gendelider
        Felhasználó

          @retaliator44:
          Nem vagyok biztos, hogy jól értettem a kérdést, de próbáld ki:

          az „elejének” eltüntetésére:

          Code:
          sed -r ‘s@[^]]*] @@’

          a „végének” eltüntetésére:

          Code:
          sed -r ‘s@ ([^)]*)@@’
          #2131863
          gendelider
          Felhasználó

            @retaliator44:
            Nem vagyok biztos, hogy jól értettem a kérdést, de próbáld ki:

            az „elejének” eltüntetésére:

            Code:
            sed -r ‘s@[^]]*] @@’

            a „végének” eltüntetésére:

            Code:
            sed -r ‘s@ ([^)]*)@@’
            #2131864
            retaliator44
            Felhasználó

              Nekem mindkettő eltünteti az összes zárójelet, legalábbis equeryvel. Azonkívül a regexpek is némi magyarázatra szorulnának, főleg a ^ karakter, és a körülötte levő szögletes zárójelek. Le tudnád írni, melyik rész mit is hivatott csinálni?

              Code:
              # equery -C list gstreamer|sed -r ‘s@[^]]*] @@’
              * installed packages
              media-libs/gstreamer-0.8.12
              media-libs/gstreamer-0.10.12
              # equery -C list gstreamer|sed -r ‘s@ ([^)]*)@@’
              * installed packages
              media-libs/gstreamer-0.8.12
              media-libs/gstreamer-0.10.12
              #2131865
              retaliator44
              Felhasználó

                Nekem mindkettő eltünteti az összes zárójelet, legalábbis equeryvel. Azonkívül a regexpek is némi magyarázatra szorulnának, főleg a ^ karakter, és a körülötte levő szögletes zárójelek. Le tudnád írni, melyik rész mit is hivatott csinálni?

                Code:
                # equery -C list gstreamer|sed -r ‘s@[^]]*] @@’
                * installed packages
                media-libs/gstreamer-0.8.12
                media-libs/gstreamer-0.10.12
                # equery -C list gstreamer|sed -r ‘s@ ([^)]*)@@’
                * installed packages
                media-libs/gstreamer-0.8.12
                media-libs/gstreamer-0.10.12
                #2131866
                gendelider
                Felhasználó

                  Kérések:
                  – equery -C list gstreamer > fájlba, és csatold légyszi, hogy pontosan ugyanazzal tudjunk kísérletezni, amivel te.
                  – mi a sed -ed verziója? Az enyém „GNU sed Version 4.1.5” (ubi 7.04 alatt)

                  Megjegyzések:
                  – Azt hiszem ezen az oldalon http://main.rtfiber.com.tw/~changyj/sed/ olvastam, hogy a különboző sed-  verziók különbözőképpen videlkedhetnek huh.gif Több speciális trükköt is itt olvastam.
                  – Hogy mikor, melyik zárójelet kell devalidálni -sel, ne kérdezd; leginkább próbálkozással jön ki: amelyik „állapotban” nyivákol” azért, hogy nincs párja, abban zárójelezni lehet vele, amelyik állapotban nem, ott sima karakter. Vagy… mint itt lejjebb látod…
                  – Volt évekkel ezelőtt egy jó kis füzetecském (nyomtatott), de valaki lenyúlta. a regexp-kről szólt, külön táblázatokkal, mert sajnos nem pontosan ugyanaz a grep-ben, az ex-ben, az awk-ban, a perl-ben, … és a shellekben. 47.gif

                  sed -r ‘s@[^]]*] @@’ – nézzük karakterenként, a szokásos dolgokkal nem foglalkozom most. A kifejezés „szavakkal”: cseréld le „semmire” a következőt: mindent, amíg nem találsz ], azután a ] -t is, és még egy szóközt.
                  a -r -ret a regular expression miatt használom, valahol ajánlották…
                  használok helyett, hogy a shellnek még véletlenül se jusson eszébe a kifejezésben behelyettesíteni valamit
                  az első [ : ez itt most zárójel a szokásos szögletes zárójel értelemben, tehát nem karakter.
                  a ^ : a szögletes nyitózárójel után közvetlenül álló ^ a nem, tehát az ezt következő felsorolás értelme megfordul, nem valamelyik belőle, hanem egyik sem.
                  a ] itt most nem zárójel, hanem karakter. Be leht írni szögletes zárójeles kifejezésbe, de ekkor kötelezően az első helyen, vagy a ^ jel után az első helyen kell állnia.
                  a következő ] itt most a szögletes zárójeles fifejetés bezáró zárójele.
                  a * az „akárhányszor” ismétlésoperátor
                  a következő ] egyszerű karakter, az utána következő szóköz szintén.
                  Ezt a sorozatot cserélem le „semmi”-re, nálam így néz ki az eredmény:

                  Code:
                  [M~] media-libs/gstreamer-0.8.12 (0.8)
                  [ ~] media-libs/gstreamer-0.10.14 (0.10)

                  A másik
                  sed -r ‘s@ ([^)]*)@@’ Szavakkal: cseréld le „semmi”-re a következőt: egy (, utána mindent, ami nem ) és végül a ) -t is. Részletesen
                  ( a gömbölyű nyitózárójel, devalidálni kell,
                  [^)]* minden, ami nem gömbölyű záró zárójel, akárhányszor, devalidálni kell,
                  ) a gömbölyű záró zárójel, devalidálni kell. AZ eredmény nálam:

                  Code:
                      [I–] [M~] media-libs/gstreamer-0.8.12
                      [I–] [ ~] media-libs/gstreamer-0.10.14
                  #2131867
                  gendelider
                  Felhasználó

                    Kérések:
                    – equery -C list gstreamer > fájlba, és csatold légyszi, hogy pontosan ugyanazzal tudjunk kísérletezni, amivel te.
                    – mi a sed -ed verziója? Az enyém „GNU sed Version 4.1.5” (ubi 7.04 alatt)

                    Megjegyzések:
                    – Azt hiszem ezen az oldalon http://main.rtfiber.com.tw/~changyj/sed/ olvastam, hogy a különboző sed-  verziók különbözőképpen videlkedhetnek huh.gif Több speciális trükköt is itt olvastam.
                    – Hogy mikor, melyik zárójelet kell devalidálni -sel, ne kérdezd; leginkább próbálkozással jön ki: amelyik „állapotban” nyivákol” azért, hogy nincs párja, abban zárójelezni lehet vele, amelyik állapotban nem, ott sima karakter. Vagy… mint itt lejjebb látod…
                    – Volt évekkel ezelőtt egy jó kis füzetecském (nyomtatott), de valaki lenyúlta. a regexp-kről szólt, külön táblázatokkal, mert sajnos nem pontosan ugyanaz a grep-ben, az ex-ben, az awk-ban, a perl-ben, … és a shellekben. 47.gif

                    sed -r ‘s@[^]]*] @@’ – nézzük karakterenként, a szokásos dolgokkal nem foglalkozom most. A kifejezés „szavakkal”: cseréld le „semmire” a következőt: mindent, amíg nem találsz ], azután a ] -t is, és még egy szóközt.
                    a -r -ret a regular expression miatt használom, valahol ajánlották…
                    használok helyett, hogy a shellnek még véletlenül se jusson eszébe a kifejezésben behelyettesíteni valamit
                    az első [ : ez itt most zárójel a szokásos szögletes zárójel értelemben, tehát nem karakter.
                    a ^ : a szögletes nyitózárójel után közvetlenül álló ^ a nem, tehát az ezt következő felsorolás értelme megfordul, nem valamelyik belőle, hanem egyik sem.
                    a ] itt most nem zárójel, hanem karakter. Be leht írni szögletes zárójeles kifejezésbe, de ekkor kötelezően az első helyen, vagy a ^ jel után az első helyen kell állnia.
                    a következő ] itt most a szögletes zárójeles fifejetés bezáró zárójele.
                    a * az „akárhányszor” ismétlésoperátor
                    a következő ] egyszerű karakter, az utána következő szóköz szintén.
                    Ezt a sorozatot cserélem le „semmi”-re, nálam így néz ki az eredmény:

                    Code:
                    [M~] media-libs/gstreamer-0.8.12 (0.8)
                    [ ~] media-libs/gstreamer-0.10.14 (0.10)

                    A másik
                    sed -r ‘s@ ([^)]*)@@’ Szavakkal: cseréld le „semmi”-re a következőt: egy (, utána mindent, ami nem ) és végül a ) -t is. Részletesen
                    ( a gömbölyű nyitózárójel, devalidálni kell,
                    [^)]* minden, ami nem gömbölyű záró zárójel, akárhányszor, devalidálni kell,
                    ) a gömbölyű záró zárójel, devalidálni kell. AZ eredmény nálam:

                    Code:
                        [I–] [M~] media-libs/gstreamer-0.8.12
                        [I–] [ ~] media-libs/gstreamer-0.10.14
                    #2131868
                    retaliator44
                    Felhasználó

                      Ennyi a file tartalma 🙂

                      * installed packages
                      media-libs/gstreamer-0.8.12
                      media-libs/gstreamer-0.10.12

                      Pont ez a gondom… a sed magában működik, az equery kimenete hülyíti meg. Hogy miféle kimenetre mennek a zárójelek, arról fogalmam sincs… Pláne így :D:

                      # equery -C list gstreamer 2>/dev/null
                      [ Searching for package ‘gstreamer’ in all categories among: ]
                      * installed packages
                      [I–] [M~] media-libs/gstreamer-0.8.12 (0.8)
                      [I–] [ ~] media-libs/gstreamer-0.10.12 (0.10)
                      # equery -C list gstreamer 1>/dev/null

                      Sed 4.1.5 szintén, Sabayon 3.4e.
                      A -r az extended regexp, nem tudom, pontosan mit is változtat, de jó ha ott van.
                      A magyarázatot pedig köszönöm, így már értem!

                      #2131869
                      retaliator44
                      Felhasználó

                        Ennyi a file tartalma 🙂

                        * installed packages
                        media-libs/gstreamer-0.8.12
                        media-libs/gstreamer-0.10.12

                        Pont ez a gondom… a sed magában működik, az equery kimenete hülyíti meg. Hogy miféle kimenetre mennek a zárójelek, arról fogalmam sincs… Pláne így :D:

                        # equery -C list gstreamer 2>/dev/null
                        [ Searching for package ‘gstreamer’ in all categories among: ]
                        * installed packages
                        [I–] [M~] media-libs/gstreamer-0.8.12 (0.8)
                        [I–] [ ~] media-libs/gstreamer-0.10.12 (0.10)
                        # equery -C list gstreamer 1>/dev/null

                        Sed 4.1.5 szintén, Sabayon 3.4e.
                        A -r az extended regexp, nem tudom, pontosan mit is változtat, de jó ha ott van.
                        A magyarázatot pedig köszönöm, így már értem!

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