i'd like to start by thanking you again and again.
however your help is needed once again.
i've almost understood the given awk help though i'm facing trouble with the following records:
Quote:
01,02530,2011-01-26,08:11:00,IN
01,02530,2011-01-26,18:40:00,OUT
01,02801,2011-01-26,09:07:00,IN
01,02801,2011-01-26,09:47:00,OUT
01,02801,2011-01-26,09:53:00,IN
01,02801,2011-01-26,18:06:00,OUT
01,02877,2011-01-26,08:29:00,IN
01,02877,2011-01-26,17:11:00,OUT
01,05713,2011-01-26,08:11:00,IN
01,05713,2011-01-26,13:47:00,OUT
01,05713,2011-01-26,14:47:00,IN
01,05713,2011-01-26,17:08:00,OUT
whaty ou helped me with is the following:
Quote:
awk -F, '{if($1 != "X" && !a[$3]) {a[$3]++;if($4 > "09:10:00") print "ID number " $2 " came in on",substr($3,6,5)," at",substr($4,0,5),"after 09:10";}}'
now i got rid of
as i've managed to remove it from the output file.
though with the samples given above, there's no result.
it's something related to the first condition, though can't seem to pinpoint it
is it due to the way they're sorted?
keep in mind that it work's perfectly with the following initial output ;
01,01368,2010-12-02,09:07:00,Pass
01,01368,2010-12-02,10:54:00,Pass
01,01368,2010-12-02,13:07:04,Pass
01,01368,2010-12-02,18:54:01,Pass
01,01368,2010-12-03,09:02:00,Pass
01,01368,2010-12-03,13:53:00,Pass
01,01368,2010-12-03,16:07:00,Pass
Quote:
Originally Posted by
anurag.singh
1. $1 != "X" == >> $1 is 1st field of every record, This check ensures that we should not process 1st record in inputFIle, The Header Record (X , ID , Date, Time, Y
).
But this check is not necessary(And can be removed) in post #10 command. 2nd if condition (check on $4) will not be true for Header record and so that will not be printed.
2. what does !a[$3] stand for? == >> This checks if a[$3] is NULL OR has any value set in it. if(!a[$3]) is equivalent to if(a[$3]==NULL)
3. substr($3,6,5) == >> $3 will have year value like 2010-12-03. String indices in awk starts at 1. To get 12-03, start index is 6 (12-03 starts from 6th character) and then it goes upto the end i.e. lenght is 5.
substr($3,6) also gives same result. length is not needed if substring goes upto the last character.
I learned most of stuffs here only (After building few basics) by following posts of experts here Scrutinizer, vgersh99, Franklin52, fpmurphy, scottn, radoulov etc to name a few
Few AWK articles (Many more can be found on internet):
opengroup_awk
grymoire
Utrecht_University_docs
thegeekstuff_awk_with_examples (link removed)