* juergen seibel wrote/schrieb:

> Der unix-Befehl "&&" heisst "und" ?
> Das funzt aber irgendwie nicht.
> Ich habe probiert:
> 
> cat /home/jseibel/ad.txt | grep martin && Schmitt -i <ret>
> 
> geht net :-( Was mache ich falsch?
> 
> N�chstes Vorhaben, ich will suchen nach:
> ("Martin" oder "Schmitt") oder ("Martin" und "Schmitt")
> oder (nur "Martin") oder (nur "Schmitt") suchen.
> 
> Der unix-Befehl oder ist doch "||" ?
> M�sste dann so �hnlich aussehen:
> cat /home/jseibel/ad.txt | grep -i martin || schmitt

Gro�es Durcheinander...

Die Sache mit "und" und "oder" stimmt grob, hat aber mit dem, was Du
vorhast, nichts zu tun.

befehl1 && befehl2 

f�hrt Befehl 2 aus, wenn Befehl 1 erfolgreich ausgef�hrt werden konnte.

befehl1 || befehl2 

f�hrt Befehl 2 aus, wenn Befehl 1 ohne Erfolg ausgef�hrt wurde.

Zum Verst�ndnis von "||": Es handelt sich um ein logisches "oder". Wenn der
erste Ausdruck erf�llt war, ist der gesamte Ausdruck erf�llt, und der
zweite Ausdruck braucht nicht mehr abgearbeitet werden. Konnte der erste
Ausdruck nicht erfolgreich abgearbeitet werden, wird versucht, ob es
vielleicht beim zweiten Ausdruck doch noch klappt.

Jetzt zu Deinem Grep-Problem. "Oder" ist die einfachste Variante, daf�r
nimmst Du am besten nicht grep sondern egrep:

cat blah | egrep -i "(foo|bar)"

Sucht nach "foo" oder "bar", ohne Gro�- und Kleinschreibung zu beachten.

Die "Und"-Variante ist auf die Schnelle nicht richtig elegant zu machen, 
daher w�rde ich einfach zweimal "grep" hintereinanderh�ngen:

cat blah | grep -i foo | grep -i bar

Sucht zuerst nach "foo", und in den Ergebnissen dieser Suche nach "bar",
wieder ohne auf Gro�- und Kleinschreibung zu achten.

Ist die Verwirrung jetzt komplett? ;-)

-martin

-- 
"The day they take Linux away from us
is the day they pry it from our cold, dead fingers!"
---------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an