Re: grep und RegEx
Hallo,
Am Wed, 18 May 2005, Michelle Konzack schrieb:
[..]
>Nur wie man sieht ist am anfanfg die () noch mit nem TAG gefüllt und
>jetzt nicht mehr...
>
>Die Idee mit
>
> __( '/home/michelle.konzack/bin/tdmailbody' )_________________________
> /
><snip>
>| if [ -f $LIST$1 ] ; then
>| SUBJECT_ORIG=`cat $TMP_FILE | /usr/bin/formail -zx Subject:`
>| TEST=`fgrep --quiet --ignore-case --file=$LIST$1 $TMP_FILE`
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[..]
>war zwar gut und schneller, aber da ich in den Logfiles den <TAG> haben
>will, muß wohl doch über 'cat' ... gehen:
Nein. Schau in meine andere Mail.
> __( '/home/michelle.konzack/bin/tdmailbody.old' )_____________________
> /
><snip>
>| if [ -f $LIST$1 ] ; then
>| SUBJECT_ORIG=`cat $TMP_FILE | /usr/bin/formail -zx Subject:`
Ist $TMP_FILE eine einzelne Mail?
>| (cat $LIST$1; echo ) |
> ^^^^^^^^^^^^^^^^^^^^^^
>| while read VAL
> ^^^^^^^^^^^^^^
>| do
>| if [ "$VAL" == "" ] ; then exit 1 ; fi
>| TEST=`fgrep --ignore-case "$VAL" $TMP_FILE`
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>| if [ $? -eq 0 ] ; then
>| if [ "$2" == "" ] ; then SUB="***SPAM_body***" ; else SUB=$2 ; f
>| i
>| cat $TMP_FILE | formail -i "Subject: $SUB $SUBJECT_ORIG" -i "X-
>| TDMailBody: $VAL"
>| rm -f $TMP_FILE
>| DATE=`date "+%Y-%m-%d %H:%M:%S"`
>| echo "$DATE : ($VAL) $SUBJECT_ORIG" >>$LOGDIR/`date "+%Y-%m"`.lo
>| g
>| exit 0
>| fi
>| done
>| fi
><snip>
> \______________________________________________________________________
Ich versuch's mal hiermit:
====
test -f "${LIST}${1}" || exit 1; ## statt dem if .. fi
SUBJECT_ORIG="`/usr/bin/formail -zx 'Subject:' < \"$TMP_FILE\"`"
SUB="${2:-'***SPAM_body***'}"; ## SUB musst du nicht in der Schleife
## bei jedem pattern neu setzen
while read -r pattern;
test -n "$pattern" || exit 2; ## so erkennst du ggfs. warum sich
## das script beendet hat. evtl.
## willst du aber auch nicht, dass
## das script sich bei der ersten
## Leerzeile beendet, dann nimm
## '|| continue' statt dem '|| exit 2'
if grep -qiF "$pattern" "$TMP_FILE"; then ## dich interessiert
## nur der Status, du verwendest
## "TEST" nicht weiter...
formail -i "Subject: $SUB $SUBJECT_ORIG" \
-i "X-TDMailBody: $pattern" \
< "$TMP_FILE"
rm -f "$TMP_FILE"
echo "`date '+%Y-%m-%d %H:%M:%S'`: ($pattern) $SUBJECT_ORIG" \
>> "${LOGDIR}/`date '+%Y-%m'`.log"
exit 0
fi
done < "${LIST}${1}"
====
====
cat "${LIST}${1}" | while read -r pattern; do
...
done
====
wuerde auch gehen, braucht halt unnoetigerweise das cat zusaetzlich.
BTW: wie erzeugst du $TMP_FILE? Ist das a) sicher, und b) noetig?
HTH & HAND,
-dnh
--
283: whoami
Whoami ist nur was für Leute mit Alzheimer! (Begründung von
Microsoft Deutschland für das Entfernen des Befehls aus Windows
NT)
Reply to: