Grep using date issue


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Grep using date issue
# 15  
Old 01-15-2014
You still didn't answer some of my questions, so making some assumptions, the following seems to do what I think you want. Although written using ksh, it has been tested with both bash and ksh:
Code:
#!/bin/ksh
IAm=${0##*/}
if [ $# -ne 1 ]
then    printf "Usage: %s starting_HH:MM\n" "$IAm" >&2
        exit 1 
fi
# Verification that $1 is in proper format is left as an excercise for the user
HH=${1%:*}                                              # Get Hour from $1
MM=${1#*:}                                              # Get Minute from $1
HH=${HH#0}                                              # Strip HH leading 0
MM=${MM#0}                                              # Strip MM leading 0
M1=$(( (MM + 1) % 60))                                  # Calculate MM+1
M2=$(( (MM + 2) % 60))                                  # Calculate MM+2
H1=$(( (HH + (M1 < MM)) % 24))                          # Calc HH for MM+1
H2=$(( (HH + (M2 < MM)) % 24))                          # Calc HH for MM+2
HM=$(printf "%02d:%02d" "$HH" "$MM")                    # Format HH:MM
HM1=$(printf "%02d:%02d" "$H1" "$M1")                   # Format HH:MM for MM+1
HM2=$(printf "%02d:%02d" "$H2" "$M2")                   # Format HH:MM for MM+2
T0ERE=$(printf "%s:0[1-9]|%s:[1-5][0-9]" "$HM" "$HM")   # ERE for MM
T12ERE=$(printf "(%s|%s):[0-5][0-9]" "$HM1" "$HM2")     # ERE for MM+1 and MM+2
TERE=$(printf "(%s|%s)" "$T0ERE" "$T12ERE")             # ERE for MM to MM+2
# final ERE for color before or after desired timestamps
ERE=$(printf "(yellow.*%s|%s.*yellow)" "$TERE" "$TERE")
grep -E "$ERE" out.log

When out.log contains:
Code:
yellow team won at 00:23:59 on monday
red team won at 00:00:43 on monday
yellow team won at 00:01:07 on monday
yellow team won at 00:02:55 on monday
yellow team won at 23:59:23 on monday

at 00:23:59 on monday, yellow team won
at 00:00:43 on monday, red team won
at 00:01:07 on monday, yellow team won
at 00:02:55 on monday, yellow team won
at 23:59:23 on monday, yellow team won

and the above script is invoked as:
Code:
./script_name 23:59

the output produced is:
Code:
yellow team won at 00:01:07 on monday
yellow team won at 23:59:23 on monday
at 00:01:07 on monday, yellow team won
at 23:59:23 on monday, yellow team won


Last edited by Don Cragun; 01-16-2014 at 11:41 PM.. Reason: Fix some newlines lost during copy and paste.
This User Gave Thanks to Don Cragun For This Post:
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Date issue

How to compare two input date string? What I am basically trying to get here is get file names in a directory for a particular date range. I would like to get the file data growth over a certain period of time. When below code ran I am getting error - -sh: 20190929: No such file or... (4 Replies)
Discussion started by: vedanta
4 Replies

2. Shell Programming and Scripting

Date issue

I have posted a code last week about that date format problem, well I have figured out a much lesser coding. #!/usr/bin/bash clear export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 if ; then echo " Incorrect Number of Arguments"; echo " Usage : Main_Script <FROM_DATE>... (1 Reply)
Discussion started by: Chandan_Bose
1 Replies

3. Shell Programming and Scripting

Simple date issue

Hi , Here is the smaller version of the problem. Working individually as command ************************>echo $SHELL /bin/bash ************************>TO_DAY=`date` ************************>echo $TO_DAY Tue Jul 16 02:28:31 EDT 2013 ************************> Not working when... (5 Replies)
Discussion started by: Anupam_Halder
5 Replies

4. Shell Programming and Scripting

Calculating expiry date using date,sed,grep

Hi, I would greatly appreciate it if someone can help me with my problem. I have a crawler which collects spam URLs everyday & this data needs to be published in a blacklist. Here's the catch: The "Time To Live" (TTL) for each URL is 3 months (or whatever for that matter). If i see the... (5 Replies)
Discussion started by: r4v3n
5 Replies

5. Shell Programming and Scripting

date printing issue

Hello folks Below command shows current date echo `date +%Y-%m-%d` 2010-04-21 How to show one day old date, i want see like 2010-04-20 (1 Reply)
Discussion started by: learnbash
1 Replies

6. Shell Programming and Scripting

Date issue

Hi I need to write a shell script (bash) that takes a date as an in-parameter an decides if its winter or summer time. I have diffrent dates like 20150112 , 200901028 , 200100605 etc. The rule for winter/summer time is : Summer time spans between the last Sunday in march 02:00 to the... (2 Replies)
Discussion started by: duffnix
2 Replies

7. Shell Programming and Scripting

sort date issue

Hi Everyone, # cat b Sat 12 Sep 2009 10:31:49 PM MYT;a;a;a;Sun 13 Sep 2009 11:32:49 AM MYT; Sat 13 Sep 2009 10:31:49 PM MYT;a;a;a;Mon 14 Sep 2009 10:31:49 PM MYT; Sat 14 Sep 2009 10:31:49 PM MYT;a;a;a;Sun 13 Sep 2009 10:31:49 PM MYT; # sort -t';' -k5 b Sat 13 Sep 2009 10:31:49 PM... (8 Replies)
Discussion started by: jimmy_y
8 Replies

8. Solaris

Cron Date issue

Hi, We have Solaris10.2.3 server. If we execute command `date` on Command Line Promt it shows time - >Tue Jun 23 11:35:55 BST 2009 - which is correct However if the command is executed through cron it gives - >Tue Jun 23 10:35:55 ESTEDT 2009 - which is wrong Request you to help me in... (1 Reply)
Discussion started by: sk2304
1 Replies

9. UNIX for Advanced & Expert Users

date issue-find prevoius date in a patricular format

Hi , I have written a shell script that takes the current date on the server and stores it in a file. echo get /usr/home/data-`date '+%Y%d'`.xml> /usr/local/sandeep/GetFILE.ini I call this GetFILE.ini file from an sftp program to fetch a file from /usr/home/ as location. The file is in... (3 Replies)
Discussion started by: bsandeep_80
3 Replies

10. Programming

date issue

hi all: I want to create a new file dynamically for each day.how can i do this. eg.. struct tm tm; while(1) { if(tm.tm_hr==0 && tm.tm_min=0 && tm.tm_sec==0) { //create a new file.. ... (3 Replies)
Discussion started by: bankpro
3 Replies
Login or Register to Ask a Question