Visit Our UNIX and Linux User Community

Top Forums Shell Programming and Scripting Problem with Date Comparision Post 302338405 by durden_tyler on Monday 27th of July 2009 10:58:12 PM
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
 
Test Your Knowledge in Computers #750
Difficulty: Medium
The IBM Personal Computer/AT (model 5170), announced on August 15, 1984.
True or False?

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

5. 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

6. 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

7. 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

8. 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

9. 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

10. 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
AUREPORT:(8)						  System Administration Utilities					      AUREPORT:(8)

NAME
aureport - a tool that produces summary reports of audit daemon logs SYNOPSIS
aureport [options] DESCRIPTION
aureport is a tool that produces summary reports of the audit system logs. The aureport utility can also take input from stdin as long as the input is the raw log data. The reports have a column label at the top to help with interpretation of the various fields. Except for the main summary report, all reports have the audit event number. You can subsequently lookup the full event with ausearch -a event number. You may need to specify start & stop times if you get multiple hits. The reports produced by aureport can be used as building blocks for more complicated analysis. OPTIONS
-au, --auth Report about authentication attempts -a, --avc Report about avc messages -c, --config Report about config changes -cr, --crypto Report about crypto events -e, --event Report about events -f, --file Report about files --failed Only select failed events for processing in the reports. The default is both success and failed events. -h, --host Report about hosts -i, --interpret Interpret numeric entities into text. For example, uid is converted to account name. The conversion is done using the current resources of the machine where the search is being run. If you have renamed the accounts, or don't have the same accounts on your machine, you could get misleading results. -if, --input file Use the given file instead if the logs. This is to aid analysis where the logs have been moved to another machine or only part of a log was saved. --input-logs Use the log file location from auditd.conf as input for analysis. This is needed if you are using aureport from a cron job. -k, --key Report about audit rule keys -l, --login Report about logins -m, --mods Report about account modifications -ma, --mac Report about Mandatory Access Control (MAC) events --node node-name Only select events originating from node name string for processing in the reports. The default is to include all nodes. Multiple nodes are allowed. -p, --pid Report about processes -r, --response Report about responses to anomaly events -s, --syscall Report about syscalls --success Only select successful events for processing in the reports. The default is both success and failed events. --summary Run the summary report that gives a total of the elements of the main report. Not all reports have a summary. -t, --log This option will output a report of the start and end times for each log. --tty Report about tty keystrokes -te, --end [end-date] [end-time] Search for events with time stamps equal to or before the given end time. The format of end time depends on your locale. If the date is omitted, today is assumed. If the time is omitted, now is assumed. Use 24 hour clock time rather than AM or PM to specify time. An example date using the en_US.utf8 locale is 09/03/2009. An example of time is 18:00:00. The date format accepted is influenced by the LC_TIME environmental variable. You may also use the word: now, recent, today, yesterday, this-week, week-ago, this-month, this-year. Today means starting now. Recent is 10 minutes ago. Yesterday is 1 second after midnight the previous day. This-week means starting 1 second after midnight on day 0 of the week determined by your locale (see localtime). This-month means 1 second after midnight on day 1 of the month. This-year means the 1 second after midnight on the first day of the first month. -tm, --terminal Report about terminals -ts, --start [start-date] [start-time] Search for events with time stamps equal to or after the given end time. The format of end time depends on your locale. If the date is omitted, today is assumed. If the time is omitted, midnight is assumed. Use 24 hour clock time rather than AM or PM to specify time. An example date using the en_US.utf8 locale is 09/03/2009. An example of time is 18:00:00. The date format accepted is influ- enced by the LC_TIME environmental variable. You may also use the word: now, recent, today, yesterday, this-week, this-month, this-year. Today means starting at 1 second after midnight. Recent is 10 minutes ago. Yesterday is 1 second after midnight the previous day. This-week means starting 1 second after midnight on day 0 of the week determined by your locale (see localtime). This-month means 1 second after midnight on day 1 of the month. This-year means the 1 second after midnight on the first day of the first month. -u, --user Report about users -v, --version Print the version and exit -x, --executable Report about executables SEE ALSO
ausearch(8), auditd(8). Red Hat Sept 2009 AUREPORT:(8)

Featured Tech Videos

All times are GMT -4. The time now is 07:13 AM.
Unix & Linux Forums Content Copyright 1993-2020. All Rights Reserved.
Privacy Policy