Re: shell script to parse html and date comp ?
Rick Welykochy <[email protected]>
| Newsgroups | gmane.org.user-groups.slug.general |
|---|---|
| Message-ID | <[email protected]> |
[email protected] wrote: > I would like to fetch date/time from html file, and use date comparison > and make an ics/vcal file eventually > > the date comes as so: > > <tr><td colspan="1" rowspan="1">Start Date Time: </td><td colspan="1" > rowspan="1">20/03/2014 1400 Thursday</td></tr> > > is 'grep -o' the way to go ? what regex do I need where I put ???? ? > > grep -o '<tr><td colspan="1" rowspan="1">Start Date Time: </td><td > colspan="1" rowspan="1">????</td></tr>' I would recommend egrep and use the following extended regular expression: egrep -o '[0-9]{2}/[0-9]{2}/[0-9]{4}[[:space:]][0-9]{4}' which gives you output like the following: 20/03/2014 1400 19/02/2014 1553 03/01/2013 0114 03/11/2012 1514 as a contrived example containing four dates as in your example. > what do I need to do with date to be able to compare it to a date range? If you use the ISO 8601 format for all dates/times in your script, life will be a lot easier, e.g. convert "20/03/2014 1400" to "20130320T1400", store it in $datetime Then you can specify a date/time range on the command line as your lower and upper bounds, $datelow and $datehigh, for comparison purposes, e.g. my_date_script.bash 20100101T0000 20141231T2359 and inside the script only accept date/times within range: if [ "$datelow" \> "$datetime" -o "$datetime" \> "$datehigh" ]; then echo Datetime $datetime is not in range [ $datelow, $datehigh ] else echo Found datetime $datetime fi Of course, all of this would be much easier to code in python, perl or ruby. HTH! cheers rickw -- ------------------------------------ Rick Welykochy || Vitendo Consulting Gerrold's Fundamental Truth: It's a good thing money can't buy happiness. We couldn't stand the commercials. -- SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/ Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html