[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: grep und RegEx



Hallo,

Am Wed, 18 May 2005, Michelle Konzack schrieb:
>nur funktiniert das irgendwie nicht, wenn ich grep verwende.
>
>  __( stdin )______________________________

Willst du von stdin lesen oder wie?

>| (cat $LIST;echo) |
>| while read VAL
>| do
>|   grep -i "$VAL" $TMPFILE >/dev/null 2>&1
>|   if [ $? == "0" ] ; then
>|   ...
>|   ...
>|   exit 0
>|   fi
>| done
> \_________________________________________

*oerks*

====
while read -r pattern; do
    if grep -qi "$pattern" "$TMPFILE"; then
        #...
    fi
done < "$LIST"
====

Evtl. suchst du eher nach 'grep -F -f "$LIST" "$TMPFILE" o.ae., das
kommt darauf an, was du wie machen willst.

Einzige "Geschmackssache" ist der Variablenname "pattern". Ich
schreibe Variablen, die nicht "konstant" / quasi-Konstanten sind (wie
z.B. FOOBIN="/usr/bin/foo", d.h. die einmal gesetzt und dann im script
nicht mehr geaendert werden), grundsaetzlich klein. Und benenne sie
entsprechend.

Selbst wenn ich einbuchstabige Variablen verwende (bei "for" z.B.) 
nehme ich nicht stumpf "i" sondern einen passenderen Buchstaben,
der sich meist am ersten Buchstaben eines langen Namens fuer die
Variable orientiert, z.B. f statt filename, d statt directory, p
statt pattern usw. Wobei ich die einbuchstabigen Variablen meist
nur als Schleifenvariablen o.ae. verwende. Also z.B. oben:

"while read -r p; do if grep -qi "$p" "$TMPFILE"; then ...; fi; done"

Oder sowas:

BASEURL="http://.../";
for y in `seq 2000 2005`; do
    for m in `seq 1 12`; do
        for d in `seq 1 31`; do
            printf "${BASEURL}/%04i%02i%02i.png" "$y" "$m" "$d";
        done;
    done;
done | wget -i -

Sobald aber Variablen nicht "Schleifenvariablen" oder so sind sollte
man aussagekraeftige Namen verwenden, eben z.B. "pattern" statt "val"
oder "i"...

-dnh

-- 
Drive defensively -- buy a tank.



Reply to: