Re: Frage zu grep
- To: debian-user-german@lists.debian.org
- Subject: Re: Frage zu grep
- From: "Ulrich Fürst" <Fuerst.Ulrich@vr-web.de>
- Date: Fri, 06 Oct 2006 20:25:04 +0200
- Message-id: <[🔎] courier.45269F80.00006D7D@mx0.vr-web.de>
- In-reply-to: <20060915222352.GA26873@vorlon.ping.de>
- References: <4503F82B.6000507@cation.de> <20060911214425.GA5023@denkbrett.wiegand.homedns.org> <slrnegbtri.3j3.joerg@alea.gnuu.de> <200609121106.50331@cl> <20060913100456.GB5610@vorlon.ping.de> <courier.450B0143.00007F72@mx0.vr-web.de> <20060915222352.GA26873@vorlon.ping.de>
Michael Bienia <michael@vorlon.ping.de> wrote:
> On 2006-09-15 21:38:43 +0200, Ulrich Fürst wrote:
> > Tschuldigung, wenn ich doch noch mal nachhake!
> >
> > Michael Bienia <michael@vorlon.ping.de> wrote:
> > > Die [] bezeichnen eine Zeichenklasse, d.h. eins der angegebenen
> > > Zeichen. In unserem Fall steht nur ein Zeichen zur Auswahl: das p.
> > > grep sucht also nach "ps", der grep Prozess selber wird aber als
> > > "grep [p]s" gelistet, wo das ps nicht mehr matcht.
> >
> > Dann dürfte er aber doch, wenn man beide Klammern escaped auch das
> > eigentlich zu findende nicht mehr finden!?
> > Warum funktioniert also:
> > ps aux | grep \[s\]ylpheed
> >
> > Dazu müsste es ja einen Prozeß geben, in dem "[s]ylpheed" (nicht als
> > regex) genau so drin vorkommt. Der Prozeß heißt aber "sylpheed" und
> > wird trotzdem angezeigt!?
> > Was ich verstehe, ist warum der grep Prozeß selbst rausfliegt. Was
> > ich nicht verstehe ist warum überhaupt noch ein Prozeß angezeigt
> > wird, wenn ich eine der beiden eckigen Klammern oder auch beide
> > escape.
>
> Das hat mit dem Escaping von der Bash zu tun. Die Bash interpretiert
> das \ selber und übergibt nur nur [s]ylpheed als Pattern an grep. Das
> sieht man wunderbar wenn man den grep Aufruf auch ausgibt: \| ist die
> Oder-Verknüpfung bei den basic-Regex. Damit wir das \| an der Bash
> vorbeikriegen müssen wir es auch escapen:
> ps aux | grep \[s\]ylpheed\\\|grep
> (eventuell mehrmals wiederholen bis der grep Aufruf auch auftaucht).
> Um ein \[ an grep zu übergeben, muss es escaped werden:
> ps aux | grep \\[s\\]ylpheed\\\|grep
> oder in " eingeschlossen werden:
> ps aux | grep "\[s\]ylpheed\|grep"
>
> Michael
O.k. jetzt hab' ich's auch kapiert; Danke Euch beiden!
Ulrich
Späte Antwort wg. Urlaub... Desderwegen auch der Full-Quote
Reply to: