grepovanie mien s [ ]...

Sekcia: Programovanie 18.10.2009 | 00:01
agacik   Návštevník
Ahojte. Chcem cez premmenu dat grepu nejaky vyraz a ktory sa ma hladat v nejakom texte. Kedze to je cez premennu, malo by to fungovat vseobecne. Chcel by som grepu predat napriklad aj nazov [* ". Ale stale mam problem s tou zatvorkou. Pouzivam csh.

set a = '[* " '
grep '$a' cesta

vypise "grep: Unmatched [ or [^"

Samozrejme, backslashom sa to vyriesit da, ale ja potrebujem aby to fungovalo vseobecne.
    • Re: grepovanie mien s [ ]... 18.10.2009 | 01:37
      l_barbarossa   Návštevník
      skus dat backslash uz priamo do premennej. mne to v bashi funguje takto:

      set a = '\[\*\ \"'
      grep "$a" cesta
      • Re: grepovanie mien s [ ]... 19.10.2009 | 13:20
        l_barbarossa   Návštevník
        - aha, vlastne toto si nechcel ... no, tak je snad mozne vypnut v shelli wildcard filename expansion, skus hladat v man, googli a pod. tiez termin globbing
        - len taka otazka, preco to nechces pouzit s backslash?
      • Re: grepovanie mien s [ ]... 19.10.2009 | 22:09
        l_barbarossa   Návštevník
        alebo, ak sa jedna o vyhladavanie v obsahu suborov, tak mozno s grep-om pouzit switch -F alebo pouzit fgrep:

        a='[* "'
        fgrep "$a" cesta/*
        • Re: grepovanie mien s [ ]... 20.10.2009 | 00:03
          agacik   Návštevník
          jj, to jest ono, dakujem za pomoc
      • Re: grepovanie mien s [ ]... 01.11.2009 | 14:48
        fil   Návštevník
        zdravim, ja mam podobny problem, ale ide o backslash v nazvoch suborov. napr:

        # nazov suboru si ulozim do premennej
        set a = "\"
        # hladam v tomto subore jeho meno
        grep "$a:q" < "$a"

        s prepinacom -F tento konkretny priklad funguje, ale nazvy suborov sa mozu skladat z takmer hocijakych znakov.. neviete, ako nieco take osetrit?
        robim v csh

        dakujem.
        • Re: grepovanie mien s [ ]... 01.11.2009 | 15:14
          fil   Návštevník
          napriklad pri subore s menom "-t" (bez uvodzoviek) vypise grep: illegal option -t
          dakujem za hocijaku radu.