[ILUG] awk question

Paul Jakma paul at clubi.ie
Sat Feb 21 02:25:25 GMT 2004


On Fri, 20 Feb 2004, Richard Eibrand wrote:

>   The full script is as follows
> 
> gawk ' BEGIN { FS ="," } $2 ~ /-/ {DATE=$2} \
> $1 ~ /^[0-9][0-9][0-9]/ {DIST=$1} \
>   $1 ~ /^1./ {POS=$0}    \
>   $1 ~ /^2./ {POS=$0}    \
>   $1 ~ /^3./ {POS=$0}    \
> {print DATE","DIST","POS1}' test-res
> 
> The sample input follows
> , 30-Aug-03 , Galway:
> Race 1
> Pos.,Trap,Greyhound,Prize,Wt.,Dist,By Time,SP.,Comm.
> 525
> Going: Sand,Type: Flat,Handicap: 0
> 1.,Trap 5 ,MI PIPPIN,EUR500,57,, 30.20, 2/1,SlAw,Ld 3
> 2.,Trap 1 ,QUICK BILLY,EUR100,76,5L,30.55, 4/1,EP,Chl 2
> 3.,Trap 3 ,LYNNWOOD AIDE,EUR50,60,hd,30.56, 3/1,CrdRu,RnOn
> 4.,Trap 6 ,SEEKERS HILL,, 61,hd,30.57, 6/4,EvAw,WBnds
> 5.,Trap 2 ,MAGS BIKE,, 54,hd,30.58, 4/1,EvAw,EvCh
> 6.,Trap 4 ,DRUMANEEN DUKE,, 72,0.5L,30.61, 3/1,FAw,Imp 3
> 
> which repeats for a number of races.

Ah. Btw, /^1./ matches ^11, ^12, etc. the . is "any character" in a 
regexp :) 

How about..

BEGIN { FS = "," }
$2 ~ /^[0-9]?[0-9]-...-[0-9][0-9]^/ { {DATE=$1 }
$1 ~ /[0-9]+/ && NF == 1 { DIST=$1 }
$1 ~ /^[0-9]+\./ && $2 ~ /^Trap/ { POS=$0; }
{ printf ("%s, %s, %s\n", DATE, DIST, POS) }

Ie make the patterns "tighter", more specific and less likely to 
spuriously match lines they werent meant to match. (which i suspect 
might have been the problem.. possibly. :) - though, you only 
printed in one action though. hmm..)

> Cheers, R

regards,
-- 
Paul Jakma	paul at clubi.ie	paul at jakma.org	Key ID: 64A2FF6A
	warning: do not ever send email to spam at dishone.st
Fortune:
To give of yourself, you must first know yourself.



More information about the ILUG mailing list