Segítség Fontos!!!

Kezdőlap Fórumok Programozás Segítség Fontos!!!

10 bejegyzés megtekintése - 11-20 / 24
  • Szerző
    Bejegyzés
  • #2063359
    uzsolt
    Felhasználó

      Itt pedig a válasz a kérdésedre.

      $ cat /home/zsolt/bin/teszt
      #!/bin/bash

      echo Elsõ paraméter: $1
      echo
      echo Idézõjelen kivül
      ls -l | awk {‘print $1’}
      echo Idézõjelen belül
      ls -l | awk {‘print $1‘}

      $ teszt szilva
      Elsõ paraméter: szilva

      Idézõjelen kivül
      összesen
      drwxrwxr-x
      drwxrwxr-x
      drwxrwxr-x
      drwxr-xr-x
      drwxrwxr-x
      drwxr-xr-x
      drwxr-xr-x
      drwxr-xr-x
      drwxrwxr-x
      drwxr-xr-x
      drwxr-xr-x
      drwxr-xr-x
      drwxr-xr-x
      drwxrwxr-x
      drwxr-xr-x
      drwxr-xr-x
      drwxr-xr-x
      Idézõjelen belül
      szilva
      szilva
      szilva
      szilva
      szilva
      szilva
      szilva
      szilva
      szilva
      szilva
      szilva
      szilva
      szilva
      szilva
      szilva
      szilva
      szilva
      szilva

      (kiemelések tőlem)

      #2063360
      rednek
      Felhasználó

        köszönom

        #2063361
        rednek
        Felhasználó

          Van nekem egy egybefüggő karaktersorozatom…
          pl: 319?1jkdkkw2gkegflvkjvcgji
          519v1sdélfksfvmb
          67342aklfjklsgjaklgjkgjja
          4421?lajsfhléfhlégh

          Mindegyikben az a közös, hogy az eleje változó hosszúságú számmal kezdődik.
          pl: 319
          519
          67342
          4421

          Illetve hogy a számok után [a-z] betűk vagy ? áll.
          Hogy tudom megoldani, hogy nekem csak a változó hosszúságú számot írja ki? (próbálgattam sed-el de nem jutotam semmire)
          Segítségeteket előre is köszi.

          #2063362
          lada2105
          Felhasználó

            Az awk-t tudnám ajánlani.
            Egy kis segítség:
            http://www.gnu.org/software/gawk/manual/gawk.html#Functions

            illetve:
            http://www.gnu.org/software/gawk/manual/gawk.html

            Squid logelemzést már csináltam vele, de annak a scriptje se ment egyik percröl a másikra 🙁
            Sajnos még sokat kell tanulnom, de legalább azt tudom, hogy meg lehet vele csinálni 🙂

            #2063363
            rednek
            Felhasználó

              Van nekem egy egybefüggő karaktersorozatom…
              pl: 319?1jkdkkw2gkegflvkjvcgji
                519v1sdélfksfvmb
                67342aklfjklsgjaklgjkgjja
                4421?lajsfhléfhlégh

              Mindegyikben az a közös, hogy az eleje változó hosszúságú számmal kezdődik.
              pl: 319
                519
                67342
                4421

              Illetve hogy a számok után [a-z] betűk vagy ? áll.
              Hogy tudom megoldani, hogy nekem csak a változó hosszúságú számot írja ki? (próbálgattam sed-el de nem jutotam semmire)
              Segítségeteket előre is köszi.

              Sikerült megoldanom:
              (tegyük fel, hogy ki van listáztatva a szövek, és csak azt arom le, hogy-hogy lessz pip-e hozzáfűzva az awk)
              awk -F[a-z,?] ‘{print $1}’

              #2063364
              uzsolt
              Felhasználó

                Ne hülyéskedj már! Egy kicsit mássz bele a reguláris kifejezésekbe, amúgy meg a Büki András-féle Unix/Linux héjprogramozás írójú és című könyvet tudom ajánlani (Kiskapu-nál egy kétezresért hozzádvágják, esetleg még egy kis postaköltséget is felszámítanak, de megéri)

                A javaslatom:
                sed „s@([0-9]*).*@1@g”

                Pl.:

                $ echo 123456fgnreug | sed „s@([0-9]*).*@1@g”
                123456

                #2063365
                rednek
                Felhasználó

                  Meg van nekem a könyv.
                  Majd ha lessz egy kicsit több szabadidőm akkor jobban belenézek, sajnos most vizsgaidőszak van:(
                  Egyébként tudom, hogy maszek megoldás, de működött és a feladatát ellátta:D

                  Amúgy ezt a @-os karaktert nem találtam sehol a könyvben. Lécci elmagyarázod, hogy működik … azt értem, hogy ([0-9]*).*
                  de a @1@g azt egyszerűen nem tudom megfejteni.
                  illetve az elején s@  (Substitute akar lenni?)
                  Meg a „-t sem látam még sedben használni.

                  #2063366
                  uzsolt
                  Felhasználó

                    1. @ – ez csak mezőelválasztó (általában a /-jelet szokták használni, de nekem ez szimpatikusabb, ui. /-jelet többször kell cserélnem, mint kukacot. Ekkor pedig kukaccal „olvashatóbb”.)
                    2. Ha a (…)-t érted, akkor értened kell a 1-et is. Ha nem érted (legalábbis rosszul hiszed), akkor elárulom, hogy a (..) közötti részt (persze soronként mindig más és más) memóriába/változóba rakja, amire a 1-gyel hivatkozok (a következő, ki nem találod, a 2 lesz).
                    3. „s” : igen, substitute, tehát csere.
                    4. Idézőjel: én ezt szoktam, nem az aposztrófot. Az aposztrófot inkább belül szoktam. Az, hogy még nem láttad, vagy hazugság, vagy pedig nem olvastad el rendesen ezt a válaszomat 😉

                    Tehát mit is csinál:
                    s : a sed cserélni fog
                    @ : paraméter-elválasztó
                    ([0-9]*).* : olyan mintát keres, aminek az elején számjegyek vannak (ezt eltárolja a memóriában), majd utána bármit (megj.: lehet, hogy az elejére kellene egy ^, hogy a sor elejére illessze).
                    @ : köv. paraméter jön
                    1 : ez az, amire cserélni kell, tehát az első eltárolt változót helyettesíti.
                    @ : opciók következnek
                    g : globálisan keresse, tehát ne csak soronként egyszer (ami itt most felesleges, de én már megszokásból kirakom).

                    Egyébként ez mind benne van a már említett könyvben, a sed-es fejezetben. Azt a példát, amikor a tizedespontot cseréli tizedesvesszőre, érdemes áttanulmányozni, ui. sok okos dolog van benne.

                    #2063367
                    rednek
                    Felhasználó

                      Köszönöm szépen a felvilágosítást. (Amúgy tényleg átláthatóbb ha / helyett @-ot használok.)

                      #2063368
                      mata
                      Felhasználó
                        Code:
                        $ cat pld
                        319?1jkdkkw2gkegflvkjvcgji
                        519v1sdélfksfvmb
                        67342aklfjklsgjaklgjkgjja
                        232421?lajsfhléfhlégh

                        $ cat pld | sed ‘s/(^[0-9]*).*$/1/’
                        319
                        519
                        67342
                        232421

                        Bocs, látom ezzel elkéstem 106.gif
                        mire beküldtem, már volt megoldás. Mentségemre szóljon, hogy kezdő vagyok ezen a fórumon…

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