linux-l: regexp

Rolf Buenning RBuenning at t-online.de
Mo Aug 21 16:58:48 CEST 2000


Hallo,

On Sam, Aug 19, 2000 at 07:06:28 +0200, Dreger Jens Dreger wrote:
> On Sat, Aug 19, 2000 at 06:34:41PM +0100, Andre Grueneberg wrote:
[...]
> > 
> > Ja, sicher...;)
> > 
> > /^((1[7-9]|[23].)\.07|([01].|2[0-3])\.08)\.2000/
> > 
> > Is ungetestet...und prüft so nur das erste Datum in der
> > Zeile...naja, und geht 

Danke, aber leider funktioniert's nicht, oder ich bin zu bloed :(
Ich habe (aus Linux-Magazin) ein script 'calc', das mittels awk was
ausrechnet.
Beginnt so...
--------------
#!/bin/sh
#
case $* in
  -d) PARAM=`/bin/date +%d.%m.%Y`;;
  -m) PARAM=`/bin/date +%m.%Y`;;
  -y) PARAM=`/bin/date +%Y`;;
  -?|-h|-help) echo "calc [-d|-m|-y|<pattern>]"
               echo "Berechnet Online-Zeit, Zugriffe"
               echo
   exit;;
  *) PARAM="$*";;
     ^^^^^
esac
grep "$PARAM" /etc/online.txt | \
^^^^^^^^^^^^
awk \
'BEGIN { total=0 }
usw.
------------------------
Wenn ich o.g. expr an das script uebergebe, sollte er fuer diesen
Zeitraum die Auswertung ausgeben. Leider kommt immer '0' raus, und das
auch nur, wenn der Ausdruck in "" geklammert wird, sonst Fehler.

> Wenn ich die Frage mal so auffasse, dass Du alle Zeilen zwischen der
> mit 17.07. und 23.08. am Anfang haben willst (die Datei also schon
> sortiert ist), dann tut's ein:

Genau.

> 	 perl -ne 'print if(/^17\.07\./../^23\.08\./)' datei.dat

Das funkt natuerlich.

> 
> 
> PS: ja, das geht natuerlich auch mit awk.
                                       ????

OK, Danke euch beiden, ich arbeite weiter 'dran.

Gruss Rolf



Mehr Informationen über die Mailingliste linux-l