Obtain date for first Tuesday of every month


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Obtain date for first Tuesday of every month
# 1  
Old 11-07-2013
Obtain date for first Tuesday of every month

Hi ,

Please help me out to write a shell script to obtain the date of first tueday of every month. I am new to shell scripting.

Appreciate your help Thanks.
# 2  
Old 11-08-2013
Code:
 cal -m  | awk 'NR>2{Sfields=7-NF; if (Sfields == 1 ) {print $1;exit} if ( Sfields == 0) {  print $2;exit}}'

For every month of curren year
Code:
for i in `seq 12`; do cal -m $i `date '+%Y'` | awk 'NR>2{Sfields=7-NF; if (Sfields == 1 ) {print $1;exit} if ( Sfields == 0) {  print $2;exit}}' ; done

# 3  
Old 11-08-2013
try this
Code:
cal 2013 | awk 'BEGIN{b[0]=3;b[1]=2;b[2]=1;b[3]=7;b[4]=6;b[5]=5;b[6]=4}($1 ~ /^S$/){x=1;mon1=p;getline;for(i=2;i<=NF;i++){if($i==1){a[x]=i;x++}};
 d1=7-a[1]+1;d2=7-(a[2]-a[1]);d3=7-(NF-a[2]+1);split(mon1,c);
 printf "%s_Tue:%d\n%s_Tue:%d\n%s_Tue:%d\n",c[1],b[d1],c[2],b[d2],c[3],b[d3]}{p=$0}'

# 4  
Old 11-08-2013
If you have ksh93 try this

Code:
$ cal 2013
                            2013
      January               February               March          
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  
       1  2  3  4  5                  1  2                  1  2  
 6  7  8  9 10 11 12   3  4  5  6  7  8  9   3  4  5  6  7  8  9  
13 14 15 16 17 18 19  10 11 12 13 14 15 16  10 11 12 13 14 15 16  
20 21 22 23 24 25 26  17 18 19 20 21 22 23  17 18 19 20 21 22 23  
27 28 29 30 31        24 25 26 27 28        24 25 26 27 28 29 30  
                                            31                    

       April                  May                   June          
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  
    1  2  3  4  5  6            1  2  3  4                     1  
 7  8  9 10 11 12 13   5  6  7  8  9 10 11   2  3  4  5  6  7  8  
14 15 16 17 18 19 20  12 13 14 15 16 17 18   9 10 11 12 13 14 15  
21 22 23 24 25 26 27  19 20 21 22 23 24 25  16 17 18 19 20 21 22  
28 29 30              26 27 28 29 30 31     23 24 25 26 27 28 29  
                                            30                    

        July                 August              September        
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  
    1  2  3  4  5  6               1  2  3   1  2  3  4  5  6  7  
 7  8  9 10 11 12 13   4  5  6  7  8  9 10   8  9 10 11 12 13 14  
14 15 16 17 18 19 20  11 12 13 14 15 16 17  15 16 17 18 19 20 21  
21 22 23 24 25 26 27  18 19 20 21 22 23 24  22 23 24 25 26 27 28  
28 29 30 31           25 26 27 28 29 30 31  29 30                 
                                                                  

      October               November              December        
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  
       1  2  3  4  5                  1  2   1  2  3  4  5  6  7  
 6  7  8  9 10 11 12   3  4  5  6  7  8  9   8  9 10 11 12 13 14  
13 14 15 16 17 18 19  10 11 12 13 14 15 16  15 16 17 18 19 20 21  
20 21 22 23 24 25 26  17 18 19 20 21 22 23  22 23 24 25 26 27 28  
27 28 29 30 31        24 25 26 27 28 29 30  29 30 31

Code:
$ cat First_Tuesday_In_Month.sh 
#!/bin/ksh
Year=2013

for i in {0..11}; do
    for j in {0..6}; do
    date=$(date -d"$((Year-1))1231 $j day $i month" +"%w %F")
    if [ ${date:0:1} -eq 2 ]; then
           echo ${date:2}
    fi
    done
done

Code:
$ ksh First_Tuesday_In_Month.sh 
2013-01-01
2013-02-05
2013-03-05
2013-04-02
2013-05-07
2013-06-04
2013-07-02
2013-08-06
2013-09-03
2013-10-01
2013-11-05
2013-12-03

@ pravin27 you are printing date of every monday...Smilie
# 5  
Old 11-08-2013
Quote:
@ pravin27 you are printing date of every monday
-m Display Monday as the first day of the week.
Code:
$ cal -m
    November 2013
Mo Tu We Th Fr Sa Su
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

# 6  
Old 11-08-2013
Quote:
Originally Posted by pravin27
-m Display Monday as the first day of the week.
Code:
$ cal -m
    November 2013
Mo Tu We Th Fr Sa Su
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

from man page on Ubuntu 12.04 LTS 32-Bit
Code:
     -m month
             Display the specified month.  If month is specified as a decimal number, it may be followed by the letter ‘f’ or ‘p’ to
             indicate the following or preceding month of that number, respectively.

on terminal
Code:
$ cal -m
cal: option requires an argument -- 'm'
Usage: cal [general options] [-hjy] [[month] year]
       cal [general options] [-hj] [-m month] [year]
       ncal [general options] [-bhJjpwySM] [-s country_code] [[month] year]
       ncal [general options] [-bhJeoSM] [year]
General options: [-NC3] [-A months] [-B months]
For debug the highlighting: [-H yyyy-mm-dd] [-d yyyy-mm]

Where as following one displays cal of Jan
Code:
$ cal -m 1
    January 2013      
Su Mo Tu We Th Fr Sa  
       1  2  3  4  5  
 6  7  8  9 10 11 12  
13 14 15 16 17 18 19  
20 21 22 23 24 25 26  
27 28 29 30 31

Could be possible if you are using FreeBSD or RedHat
# 7  
Old 11-08-2013
With full date format "dd-mm-yyyy"
Code:
 for i in `seq 12`; do cal $i `date '+%Y'` | awk -v month=$i -v year=`date '+%Y'` 'NR>2{Sfields=7-NF; if (Sfields == 0 ) {printf "%d-%02d-%d\n",$3,month,year;exit} if ( Sfields == 1) {printf "%d-%02d-%d\n",$2,month,year;exit} if ( Sfields == 2) {printf "%d-%02d-%d\n",$1,month,year;exit}}' ; done

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How bash treats literal date value and retrieve year, month and date?

Hi, I am trying to add few (say 3 days) to sysdate using - date -d '+ 3 days' +%y%m%d and it works as expected. But how to add few (say 3 days) to a literal date value and how bash treats a literal value as a date. Can we say just like in ORACLE TO_DATE that my given literal date value... (2 Replies)
Discussion started by: pointers1234
2 Replies

2. Shell Programming and Scripting

Can we get Tuesday's date of the current week in UNIX

Hi All, I have a requirement which would calculate the Tuesday's date of the current week in yyyymmdd format in unix shell script. Please help me out how could I do this . I appreciate your help Regards, raj (7 Replies)
Discussion started by: rajeevm
7 Replies

3. Shell Programming and Scripting

Help with getting last date of previous month and first date of previous 4th month from current date

I have requirment to get last date of previous month and the first date of previous 4th month: Example: Current date: 20130320 (yyyymmdd) Last date of previous month: 20130228 (yyyymmdd) First date of previous 4th month: 20121101 (yyyymmdd) In my shell --date, -d, -v switches are not... (3 Replies)
Discussion started by: machomaddy
3 Replies

4. Shell Programming and Scripting

How to obtain a day of the week from the date?

I have a date in format YYYYMMDD, i need to get the day of the week from the given date. I am working in AIX system. ---------- Post updated at 09:59 AM ---------- Previous update was at 09:57 AM ---------- Tried to post sum of the thread's link from which i tried, but de rules didnt allow me... (9 Replies)
Discussion started by: baranisachin
9 Replies

5. UNIX for Dummies Questions & Answers

Can we get every tuesday or monday's date for the current week

Hi Can we get every tuesday or monday's date for the current week ? For the current week i need tuesday's date or monday's date in %m%d%y fromat Thanks (5 Replies)
Discussion started by: laxmi131
5 Replies

6. Shell Programming and Scripting

how to obtain date and day of the week from `date` command

Hi, does anybody know how to format `date` command correctly to return the day of the week? Thanks -A I work in ksh.... (1 Reply)
Discussion started by: aoussenko
1 Replies

7. UNIX for Dummies Questions & Answers

print previous month (current month minus 1) with Solaris date and ksh

Hi folks month=`date +%m`gives current month Howto print previous month (current month minus 1) with Solaris date and ksh (7 Replies)
Discussion started by: slashdotweenie
7 Replies

8. UNIX for Dummies Questions & Answers

Date command to obtain the last month is not working correctly..

Hello, I could not find the exactly same post here.. so I will explain what I did to get the last month using date command. I used date +%Y-%m -d "-1 months" to get the last month. However, the returned value of above command on 2009/10/31 was 2009 10 and not 2009 09.. and the... (9 Replies)
Discussion started by: tigersk
9 Replies

9. Shell Programming and Scripting

Pass the first date and last date of previous month

Hi All, I need to run a job every month at the beginning of the month which is scheduled through autosys, lets say on 03/01/2010. I need to pass the last month's i.e February's first_date = 02/01/2010 and last_date = 02/28/2010 as variables to a stored procedure. Can somebody please pass... (2 Replies)
Discussion started by: vigdmab
2 Replies

10. UNIX for Dummies Questions & Answers

CRONTAB: Every second Tuesday of the month

Morning everyone. You'll need to excuse me for I'm running a little empty this morning. Need to execute a job every second Tuesday of the month. Am I correct in my understanding that this isn't possible directly from crontab & hence I'll need to script. Does anyone have any similar solutions ?... (2 Replies)
Discussion started by: Cameron
2 Replies
Login or Register to Ask a Question