Visit Our UNIX and Linux User Community


Problem with Date Comparision


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Problem with Date Comparision
# 1  
Old 07-27-2009
Problem with Date Comparision

Hi,

I have a file which has the date in the last line in the example pasted along with the rates of the countries.

-- I want to compare the date in the last line of the file mentioned in the example below with the system date from Monday to Friday.
-- If system date is equal to the date in the Last line then ignore else send a mail notification
--For Saturday it should compare the sysdate-1 with the date in the last line from the file

--For Sunday it should compare the sysdate-2 with the date in the last line from the file.

Can any one help me a shell script in this regard?

----------------------------------------------------------------------------------------------
Example: Contents of the file


AUSTRALIA|AUD|27.4397|27.5252|28.0534
NEW ZEALAND|NZD|22.1046|22.1768|22.6529
PAKISTAN *|PKR|0.4014|0.4032|0.4279
CANADA|CAD|30.5810|30.6682|31.1338
SWEDEN|SEK|4.4355|4.4524|4.5209
DENMARK|DKK|6.4231|6.4423|6.5412
NORWAY|NOK|5.3448|5.3617|5.4429
CHINA|CNY|4.9459|4.9570|5.0135
* Averaged from few commercial banks
Released on 24 July 2009
# 2  
Old 07-27-2009
Here is one way of doing what you what to do using ksh93
Code:
#!/bin/ksh93

redirect 3< file 
3<#'Released on*'
read -u3 junk1 junk2 date
redirect 3<&- 

if (( $(printf "%(%s)T" "$date") == $(printf "%(%s)T") ))
then
    print "date in file is todays date"
else
    print "date in file is earlier than today"
fi

# 3  
Old 07-27-2009
Quote:
Originally Posted by Raji_gadam
...
-- I want to compare the date in the last line of the file mentioned in the example below with the system date from Monday to Friday.
-- If system date is equal to the date in the Last line then ignore else send a mail notification
--For Saturday it should compare the sysdate-1 with the date in the last line from the file
--For Sunday it should compare the sysdate-2 with the date in the last line from the file.
...
Here's one way to do it in Perl:

Code:
$ 
$ cat data.txt
AUSTRALIA|AUD|27.4397|27.5252|28.0534
NEW ZEALAND|NZD|22.1046|22.1768|22.6529
PAKISTAN *|PKR|0.4014|0.4032|0.4279
CANADA|CAD|30.5810|30.6682|31.1338
SWEDEN|SEK|4.4355|4.4524|4.5209
DENMARK|DKK|6.4231|6.4423|6.5412
NORWAY|NOK|5.3448|5.3617|5.4429
CHINA|CNY|4.9459|4.9570|5.0135
* Averaged from few commercial banks
Released on 24 July 2009
$ 
$ cat cmp_date.pl
#!/usr/bin/perl -w
use Date::Calc qw(:all);
%mth = qw(1 Jan 2 Feb 3 Mar 4 Apr 5 May 6 Jun
          7 Jul 8 Aug 9 Sep 10 Oct 11 Nov 12 Dec);

# get date from file
open( F1, "data.txt" ) or die "Can't open data.txt: $!";
while (<F1>) { chomp( $line = $_ ); }
close(F1) or die "Can't close data.txt: $!";
$line =~ s/Released on //;
@fd = Decode_Date_EU($line);  # decode file date and assign to array fd
##
print "Today is:  ", Date_to_Text( Today() ), "\n";

# if day of week > 5 (sat and sun) then change ref date
if ( Day_of_Week( Today() ) > 5 ) {
    @rd = Add_Delta_Days( Today(), 5 - Day_of_Week( Today() ) );
                         # today-1 if sat; today-2 if sun
} else {
    @rd = Today();       # today if mon-fri
}
print "File date: $fd[2]-$fd[1]-$fd[0]\n";
print "Ref  date: $rd[2]-$rd[1]-$rd[0]\n";
cmp_and_print( @fd, @rd );

# function to compare and print
sub cmp_and_print {
    ( $y1, $m1, $d1, $y2, $m2, $d2 ) = @_;
    $cmp = ( Date_to_Days( $y1, $m1, $d1 ) <=> Date_to_Days( $y2, $m2, $d2 ) );
    print "$d1-$mth{$m1}-$y1 is ",
          $cmp == 1 ? "greater than" : $cmp == 0 ? "equal to" : "less than",
          " $d2-$mth{$m2}-$y2\n";
}

$ 
$ perl cmp_date.pl
Today is:  Mon 27-Jul-2009
File date: 24-7-2009
Ref  date: 27-7-2009
24-Jul-2009 is less than 27-Jul-2009
$ 
$

tyler_durden

Previous Thread | Next Thread
Test Your Knowledge in Computers #102
Difficulty: Easy
Unix, Linux and other Unix-like operating systems are a family of computer operating systems that are derived from DOS.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Date command comparision with a different format

I have a script called " passwd_status " which gives the passwd-s status of my servers. the script output is like below password status for A: abc ks 10/05/115 1 30 ps password status for B: abc ks 09/25/115 1 30 ps password status for C: abc ks 10/10/115 1 30 ps Now , i want to... (1 Reply)
Discussion started by: charanarjun
1 Replies

2. Shell Programming and Scripting

Date comparision in Unix

Hi All, I would need your help to compare dates in my script. Say if I have the dates in a file I need to comapre these dates with yesterday's date and the dates which are older than yesterday needs to be displayed. Example: 03/22/2012 03/24/2012 03/20/2012 03/21/2012 03/12/2012... (1 Reply)
Discussion started by: pdreddy34
1 Replies

3. Shell Programming and Scripting

problem in variable comparision

Hi All, I need to compare the string variable with input value which have more than one word which also should be case insensitive. #!/bin/sh echo "please choose your choice: " read choice if ` ] then echo "correct" else echo "wrong" fi but i am getting the output for first word... (3 Replies)
Discussion started by: kalai
3 Replies

4. Shell Programming and Scripting

Date Manipulation and Comparision

Hi All, I want to generate quarter dates using awk or anything, by giving a dates as input for example : start_date=2010-01-01 end_date=2010-05-31 output should be: start_date end_date qtr 2010-01-01 2010-03-31 1 2010-04-01 2010-05-31 2 Example 2:... (1 Reply)
Discussion started by: sol_nov
1 Replies

5. Shell Programming and Scripting

Date - String comparision

Hi, I am having difficulty to compare a string in a file against a date from a a table and print the latest date. Below are the values. String in File : 2009-12-02 00:37:51 Value Table : 2010-01-10-02.00.49.294758 I have to compare both the values ( Ignore the Microsecond in the table... (5 Replies)
Discussion started by: sam_78_nyc
5 Replies

6. Programming

Problem with date comparision in Pro*C

Hi, I have written the following Pro*C program to get the difference between 2 dates.But when I am printing the value of the date difference,it is always showing 0. #include<stdio.h> #include<sqlca.h> #include<oraca.h> void main() { EXEC SQL BEGIN DECLARE SECTION; int diff; ... (4 Replies)
Discussion started by: sureshbabuc
4 Replies

7. Shell Programming and Scripting

problem in date comparision

#!/bin/ksh var="2009-08-31 12:39:05 UTC" ddate=`echo $var|cut -d' ' -f1` y1=`echo $ddate|cut -d'-' -f1` m1=`echo $ddate|cut -d'-' -f2` d1=`echo $ddate|cut -d'-' -f3` filedate=$y1$m1$d1 currdate="20070814" if ]; then echo "$LINE -> $filedate LOWER THAN $currdate" ... (0 Replies)
Discussion started by: HemaV
0 Replies

8. Shell Programming and Scripting

Date Comparision in the File

Hi All, I have thefollowing files in the directory inbox/sat ras.sat.trn.20090103.001902.00004358 ras.sat.trn.20090612.001903.00005339 ras.sat.trn.20090723.001902.00004358 The above file contains the date of the file creation. We just need to write a ksh shell script to check the... (5 Replies)
Discussion started by: satheesh_color
5 Replies

9. Solaris

date comparision

I am wriitng a shell script to compare a date in `date +%Y%m%d%H%M` to the output of `cat /var/adm/messages.0 | grep Temp |grep "CPU Fans" | cut -f1-4,19 -d' '` which looks like Dec 2 11:30:57 79 Dec 2 11:37:58 79 Dec 2 11:44:58 79 Dec 2 11:50:59 79 Dec 2 11:58:00 79 Dec 2... (1 Reply)
Discussion started by: Hitesh Shah
1 Replies

10. UNIX for Dummies Questions & Answers

date comparision

Hello, I am trying to compare two dates which are in variables and i am not getting the correct result as expected. $first_date = '07/19/2007' $second_date='07/20/2007' Can you please suggest how to i check whether they are equal or not. if ($first_date -eq $second_date) condition is not... (3 Replies)
Discussion started by: kotasateesh
3 Replies

Featured Tech Videos