viacero retazcov v grep-e

Sekcia: Programovanie 30.01.2010 | 12:27
Avatar siginigin   Používateľ
zdravim, chcem by som orezat vystup pomocou grepu tak ze chcem aby sa zobrazili riadky v ktorych je retazec r1 a aj riadky v ktorych je retazec r2. nieco ako v IOS-e sh run | in SEP|3750 - to mi najde vsetky ip telefony a switche 3750. skusal som to podobne v bashi ale nijako som to nevedel spravit a v helpe je napisane ze na oddelenie retazcov treba pouzit newline ale to neviem co je za znam.

dik za radu
    • Re: viacero retazcov v grep-e 30.01.2010 | 12:42
      l_barbarossa   Návštevník
      skus
      grep 'retazec1 \| retazec2' vstupny_text
      ## vsimni si, ze pred | je potrebny backslash
      ## pripadne treba dat grep-u -E prepinac (=extended regexp)
      grep -E 'retazec1|retazec2' vstupny_text
      • Re: viacero retazcov v grep-e 30.01.2010 | 12:51
        Avatar siginigin   Používateľ
        tak skusil som prvu verziu:
        $ iwlist wlan0 scan | grep 'ESSID \| Enc'
        Encryption key:off
        Encryption key:on
        Encryption key:on
        Encryption key:on

        a druhu:
        $ iwlist wlan0 scan | grep -E 'ESSID|Enc'
        Encryption key:off
        ESSID:"arcomp3"
        Encryption key:on
        ESSID:"GordanShanway"
        Encryption key:on
        ESSID:"arcomp"
        Encryption key:off
        ESSID:"Trafika"

        a tato druha je to co som chcel, takze diky, ale nerozumiem tomu preco su rozdielne vysledky...
        • Re: viacero retazcov v grep-e 30.01.2010 | 12:59
          Avatar Dare_devil Debian, OpenSuse  Používateľ
          tu pouzivas grep 'ESSID \| Enc' a v druhom grep -E 'ESSID|Enc'

          Rozdiel:

          root@hell [programmer] [11:42:47]> iwlist wlan0 scan | grep 'ESSID\|Enc'
          ESSID:"PeVyT"
          Encryption key:on
          ESSID:"wifi_sirilla"
          Encryption key:on

          root@hell [programmer] [11:56:38]> iwlist wlan0 scan | grep 'ESSID \| Enc'
          Encryption key:on
          Encryption key:on
          Encryption key:on

          Nakolko nikde retazec 'ESSID ' neexistuje, je iba 'ESSID:' .. Pozor na medzery ;)
          There is no flag large enough to cover the shame of killing innocent people
          • Re: viacero retazcov v grep-e 30.01.2010 | 13:20
            Avatar siginigin   Používateľ
            jasne mam to...dik :)
            • Re: viacero retazcov v grep-e 30.01.2010 | 13:27
              Avatar siginigin   Používateľ
              vlastne nemam: preco aj Enc nezobralo ze je s medzerou? ved je tam 'ESSID \| Enc' . alebo je to take mudre, ze za pejpom da prec vsetky medzery?
              • Re: viacero retazcov v grep-e 30.01.2010 | 13:36
                Avatar Dare_devil Debian, OpenSuse  Používateľ
                Ale ved pred Enc su medzery.... Aby to bolo zarovnane, nie?
                iwlist wlan0 scan | grep ' ESSID\| Enc'
                funguje tak isto
                There is no flag large enough to cover the shame of killing innocent people
                • Re: viacero retazcov v grep-e 30.01.2010 | 13:50
                  Avatar siginigin   Používateľ
                  ok, beriem to teda tak, ze zaciatocne medzery, teda po ' a \ automaticky odstrani az do zaciatku retazca, ale z konca retazca ich neodstrani...funguje to to takto?
                  • Re: viacero retazcov v grep-e 30.01.2010 | 13:55
                    l_barbarossa   Návštevník
                    ja sa domnievam, ze nie, vsak skus si namiesto 'ESSID' zadat ' SSID' (cize medzera a SSID) ... nemalo by ti najst ziaden ESSID...
                    • Re: viacero retazcov v grep-e 30.01.2010 | 14:08
                      Avatar siginigin   Používateľ
                      dobre vravis...ked sa tak divam na povodny vypis scanu z iwlist, tak pred ESSID je vela medzier, takze ak je medzera pred ESSID tak ich moze byt hocikolko a stale to bude fungovat ale v pripade SSID to zoberie ako sucast retazca...myslim, ze uz tomu rozumiem...diky
                      • Re: viacero retazcov v grep-e 30.01.2010 | 14:30
                        Avatar Fridolín Pokorný Fedora 21  Používateľ
                        Hlada podretazec v retazci. Takze napriklad retazec 'ahoj' je podretazec 'bahoja', ale nie je podretazcom retazcu 'achoj'. Medzera sa berie ako znak, tak isto ako lubovolny znak (je to takzvany biely znak spolu s tabom a napr novym riadkom a inymi...)
              • Re: viacero retazcov v grep-e 30.01.2010 | 13:52
                l_barbarossa   Návštevník
                dobre ste to chalani pozreli, tie medzery tam prirodzene nemali byt, inak su chapane ako sucast retazca