The sample dates that were provided in post #1 seem to be in the format YYYY-MM-DD (although from the examples supplied and the lack of any specification, they could also be in the format YYYY-DD-MM). RavinderSingh13's code seems to be treating the dates as though they were in the format DD-MM-YY. (Note that the outputs from cal shown in post #4 in this thread are from the years 0015, 0014, and 0022.) The code suggested in post #6 works correctly for inputs in the format DD-MM-YYYY, but not for inputs in the format YYYY-MM-DD. Note also that it invokes cal twice and awk four times for each date processed.
You might want to consider the following script which processes inputs in the format YYYY-MM-DD and only invokes cal once and awk once for each date processed:
If you save this script in a file named tester and make it executable, invoking it with:
it produces the output:
This was written and tested using the Korn shell on OS X, but will work with any shell that performs basic shell parameter expansions required by the POSIX standards. As always, if you want to try this on a Solaris/SunOS system, change awk to /usr/xpg4/bin/awk or nawk.
This User Gave Thanks to Don Cragun For This Post:
Thank you Don for nice code. I made little modifications into my previous code and now we need not to run caland awk1 time.
Hello ROCK_PLSQL,
You could give a try to following code too and as Don mentioned above too, you could save following values(I given in comments which variable value is which) to further as per your use too. NOTE: Date should be passed into DD-MM-YYYY format.
Thanks,
R. Singh
Last edited by RavinderSingh13; 09-12-2016 at 06:16 AM..
Reason: Removed NOTE's format of date as per Don's suggestion. Thanks to Don for same.
Hi Ravinder,
Note that cal doesn't treat a 2-digit year operand as a year in the late 20th or early 21st century like the touch -t option-argument does; cal treats it as a literal 2 digit year in the 1st century. For example, look at the difference between February 2004 and February 04:
(Note: 8 weekend days in year 2004 and 9 weekends days in year 4.) So, if you're going to use cal, the entire year has to be supplied; not just the last two digits.
Note that using cut instead of awk to split month, day, and year out of the given operand still involves the very expensive fork and exec operations that could be done MUCH quicker just using parameter expansions built into the shell.
This User Gave Thanks to Don Cragun For This Post:
Location: Saint Paul, MN USA / BSD, CentOS, Debian, OS X, Solaris
Posts: 2,288
Thanks Given: 430
Thanked 480 Times in 395 Posts
Hi.
I've mentioned the dateutils suite of date utilities before. The reason that I like the codes is that they make sure the dates exist, they diagnose bad forms, etc.
Applied here to the problem, we first get a year-month sequence (dconv), then add a month (dadd), then generate a sequence of the days in the month (dseq), omitting the first day of the next month.
Then it's a matter of counting weekdays and weekENDS, a short grep-wc pipeline:
producing:
Included is a date in February that would not exist next year (2017), but exists this year (2016 being a leap year).
Hi,
I have parameter file wo_location.prm which has a date variable $last_upd_date= 02032016.
I need to write a unix shell script to find that variable and increment it by 1 day.
The path to the file is root/dir_lc/shared/param/wo_location.prm and the variable is $last_upd_date.
Any... (2 Replies)
Hi Experts,
i am using the below code get the date of previous day.
#!/usr/bin/ksh
datestamp=`date '+%Y%m%d'`
yest=$((datestamp -1))
echo $yest
When i execute the code i am getting output as:
20130715
What i am trying here is, based on the date passed i am fetching previus day's... (0 Replies)
Hai
Iam having router output in a text file.from this data how to find out the router reboot date and time using script
bgl-ras-bng-bge-09>show version | grep Time
Router Up Time - 61 days, 21 hours 31 minutes 49 secs
bgl-ras-bng-bge-09>show clock
Thu Feb 14 10:16:14 2013 IST
output... (6 Replies)
Hi All,
I am very new to UNIX and I have tried this for a longtime now and unable to crack it....
There is a file that is continuously updating. I need to search for the string and find the date @ which it updated every day.....
eg:
String is "work started"
The log entry is as below:
... (1 Reply)
Hi,
I have a text file, foo.txt, it looks something like below. In the file there is a line that gives the date in the form of: Mon Jun 15 11:09:31 2008. I need to find which date is the newest and then store certain details of that list data to another file. So, in this sample text file, I... (6 Replies)
Its been a while since we had any fun polls or interesting topics in this forum.
So, here I start a thread rather calling it as a question - " What do you do during weekends ? :) "
For many, on hearing the term - weekends should excite them :b:
for ( few ) some - uhhh .. its just another day... (11 Replies)
Hi All,
I need a help here, actually i want SQl code which will determine all Saturdays and Sunday in given year (say 2009) and display it's dates.
E.g :-
3 ---> Saturday
4 --> Sunday (for 2009) and so on.
Thanks in Advance for help.
Regards,
Arvind. (0 Replies)
Hi everyone,
Please help:)
I have a list of 1000 different files which comes daily to the directory.Some of
the files are not coming to the directory now.
I need to write a shell script to find the latest date and time of the files they
came to the directory. The files should be unique.... (1 Reply)
Hi, I have a directory PRIVATE in which I have several directories and each of these have several files. Therefore, I need to find those files by size and date to back up those files in another directory.
I don't know how to implement this shell script using ''find''.
appreciate any... (1 Reply)
Hello gurus,
I need to write a script to find out all the file that got changed on a specific folder since a given input date (Date to be given as Input)
Thanx (1 Reply)