Gabi: grep

Hallo,

Ich wüsste gerne wie ich mit grep unter debian arbeite.
Ich versteh das einfach nicht!

folgendes bsp.:
---------------------
Das ist haha ein text
Das ist hihi ein text
---------------------

ich möchte als Ausgabe "haha" und "hihi" bekommen. was muss ich dafür shell eingeben?

danke für jede Art von Hilfe!

Gabi

  1. grep gibt üblicherweise immer ganze Zeilen aus. Du brauchst sowas wie

    egrep -o "h[ai]h[ai]"

    (-o ist dafür, dass nur die Treffer ausgegeben werden, egrep sucht nach regulären Ausdrücken).

    Gruß, LX

    --
    X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: Unusual
    X-Please-Search-Archive-First: Absolutely Yes
    1. Ok hab mich wohl zu blöd ausgedrückt.. möchte immer das was in der mitte steht

      anfangabcende
      anfangcdeende
      anfangefgende

      Ich habe schon so allerlei versucht und RAFFE es EINFACH NICHT.. das ist so kompliziert... aber auch grade für mein Problem habe ich noch kein Beispiel gesehen.

      raus kommen soll bei diesem beispiel nun

      abc
      cde
      efg

      und das Suchmuster sieht jetzt wie aus?
      vorallem verstehe ich bei grep nicht was ich wo maskieren muss da ja alles schon mal mit "" anfängt :-)

      ich hab also folgendes schema in diversen varianten versucht egrep -o "^(anfang)(ende)$"
      aber nie kam das passende raus :-(

      Ggabi

      1. Ok bin schon weiter:

        grep -o 'anfang(.*)"ende'

        aber ich möchte nur den INHALT sehen nicht den ganzen string noch

        Also Ausgangspunkt ist

        anfangabcende
        anfang123ende
        anfangasdende

        suche nach grep -o 'fang(.*)"en'

        bekomme

        fangabcen
        fang123en
        fangasden

        möchte aber

        abc
        123
        asd

        Gabi

        1. Ok man muss noch mit cut zusammen arbeiten.. alles klar..

        2. aber ich möchte nur den INHALT sehen nicht den ganzen string noch

          Also Ausgangspunkt ist

          anfangabcende
          anfang123ende
          anfangasdende

          Sowas lös ich nicht mit "grep"s sondern mit sed:

          Das ist jetzt mit Windows/Gnuwin32 sed getestet (mit type statt cat) aber so ähnlich sollte es unter Linux klappen; die EINFACHEN Hochkommata sind wichtig!

          cat foo.txt | sed 's/anfang(.*)ende/\1/g'

          Die Syntax "(...)" konstituiert dabei ein Teilmuster das in \1 abgelegt und dann ausgegeben wird.

          Grüsse

          Solkar