#!/bin/ksh
typeset -i mYear mMonth mDay
typeset -i mYear2 mMonth2
typeset -i mDaysWeek
set -A mNameDays N/A Sunday Monday Tuesday Wednesday Thursday Friday Saturday
clear
echo ""
echo "Based on a date (YMD) and a day of the week,"
echo "this script will display the equivalent date (YMD)"
echo "for the entered day of the week."
echo "Examples:"
echo "1) Date: 2010-12-31 and Saturday"
echo " The output will be: 2011-01-01"
echo "2) Date: 2011-04-01 and Tuesday"
echo " The output will be: 2011-03-29"
echo ""
echo "WARNING: No data validation will be performed."
echo " Garbage in, garbage out."
echo ""
echo "Enter Year in the format (YYYY):"
read mYear
echo "Enter Month in the format (MM):"
read mMonth
echo "Enter Day in the format (DD):"
read mDayStr
mDay=${mDayStr}
# Inserts '0' to the left of single digit days:
cal ${mMonth} ${mYear} | sed -e 's/ \([1-9]\) /0\1 /g' -e 's/ \([1-9]\)$/0\1/' > /tmp/mFile_Calendar
# Remove lines without day numbers from calendar:
egrep -v '[a-z]' /tmp/mFile_Calendar > /tmp/mFile_Cal_Numbers
# Create a file with week current of day:
egrep "${mDayStr}" /tmp/mFile_Cal_Numbers > /tmp/mFile_Week
# Count the number of days in the week for calendar line:
mDaysWeek=`wc -w /tmp/mFile_Week | sed 's/ .*//'`
if [[ ${mDaysWeek} -eq 7 ]]; then
mv /tmp/mFile_Week /tmp/mFile_Full_Week
mMonth2=${mMonth}
mYear2=${mYear}
else
# If day is in first week of month:
if [[ ${mDay} -lt 7 ]]; then
# Get the last week of prior month:
if [[ ${mMonth} -eq 1 ]]; then
mMonth2=12
mYear2=${mYear}-1
else
mMonth2=${mMonth}-1
mYear2=${mYear}
fi
cal ${mMonth2} ${mYear2} | sed '$d' | tail -1 > /tmp/mFile_Week2
cat /tmp/mFile_Week2 /tmp/mFile_Week | xargs > /tmp/mFile_Full_Week
else
# If day is in last week of month:
# Get the first week of next month:
if [[ ${mMonth} -eq 12 ]]; then
mMonth2=1
mYear2=${mYear}+1
else
mMonth2=${mMonth}+1
mYear2=${mYear}
fi
# Inserts '0' to the left of single digit days:
cal ${mMonth2} ${mYear2} | sed -e 's/ \([1-9]\) /0\1 /g' -e 's/ \([1-9]\)$/0\1/' > /tmp/mFile_Calendar2
# Remove lines without day numbers from calendar:
egrep -v '[a-z]' /tmp/mFile_Calendar2 > /tmp/mFile_Cal_Numbers2
# Create a file with week current of day:
# Create a file with week current of day:
head -1 /tmp/mFile_Cal_Numbers2 > /tmp/mFile_Week2
cat /tmp/mFile_Week /tmp/mFile_Week2 | xargs > /tmp/mFile_Full_Week
fi
fi
clear
echo "==============================================="
echo "Following is the input date:"
echo "Year = ${mYear} Month = ${mMonth} Day = ${mDay}"
echo "Full week for the input date:"
echo "Su Mo Tu We Th Fr Sa"
cat /tmp/mFile_Full_Week
echo "Now enter the day of the week in the format (XX):"
echo "01-Sunday"
echo "02-Monday"
echo "03-Tuesday"
echo "04-Wednesday"
echo "05-Thursday"
echo "06-Friday"
echo "07-Saturday"
read mWeekDay
echo ${mNameDays[${mWeekDay}]}
mDay2=`cut -d' ' -f${mWeekDay} /tmp/mFile_Full_Week`
echo "For the above week, ${mNameDays[${mWeekDay}]} is:"
echo "Year = ${mYear2} Month = ${mMonth2} Day = ${mDay2}"
rm -f /tmp/mFile*
#---------------------- End of Script ---------------------#
Hi Friends,
Can you help me with this,
I would like to get the week number of the "Monday",
Say if we run on first week of november it should give me output as "05" and "10" i.e it says the monday falls on 5th week of october.
If we run on the second week of november it should give me "01"... (8 Replies)
Hi
I want to extract the date on Monday depending upon the user input for that week.
For example if the input date is 20080528 then the output should be 20080526. If the input is 20080525 then it will be 20080519
i am working on IBM AIX
Thanks (2 Replies)
Hi,
I have a requirement where I want to get the date of monday when I am running the script from previous Friday to the following Thursday.
For example: When ever I run the script between 19thFeb2010(Friday) to 25th Feb 2010(Thursday), I should get the date of 22nd Feb 2010 in the format of... (5 Replies)
Hi all,
I've used various scripts in the past to work out the date last week from the current date, however I now have a need to work out the date 1 week from a given date.
So for example, if I have a date of the 23rd July 2010, I would like a script that can work out that one week back was... (4 Replies)
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)
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. (7 Replies)
Discussion started by: prongs22
7 Replies
LEARN ABOUT CENTOS
cal
CAL(1) User Commands CAL(1)NAME
cal - display a calendar
SYNOPSIS
cal [options] [[[day] month] year]
DESCRIPTION
cal displays a simple calendar. If no arguments are specified, the current month is displayed.
OPTIONS -1, --one
Display single month output. (This is the default.)
-3, --three
Display prev/current/next month output.
-s, --sunday
Display Sunday as the first day of the week.
-m, --monday
Display Monday as the first day of the week.
-j, --julian
Display Julian dates (days one-based, numbered from January 1).
-y, --year
Display a calendar for the current year.
-V, --version
Display version information and exit.
-h, --help
Display help screen and exit.
PARAMETERS
A single parameter specifies the year (1 - 9999) to be displayed; note the year must be fully specified: cal 89 will not display a calendar
for 1989.
Two parameters denote the month (1 - 12) and year.
Three parameters denote the day (1-31), month and year, and the day will be highlighted if the calendar is displayed on a terminal. If no
parameters are specified, the current month's calendar is displayed.
A year starts on Jan 1. The first day of the week is determined by the locale.
The Gregorian Reformation is assumed to have occurred in 1752 on the 3rd of September. By this time, most countries had recognized the ref-
ormation (although a few did not recognize it until the early 1900's). Ten days following that date were eliminated by the reformation, so
the calendar for that month is a bit unusual.
HISTORY
A cal command appeared in Version 6 AT&T UNIX.
AVAILABILITY
The cal command is part of the util-linux package and is available from ftp://ftp.kernel.org/pub/linux/utils/util-linux/.
util-linux June 2011 CAL(1)