Sponsored Content
Top Forums Shell Programming and Scripting Getting week number of the "Monday" Post 302095455 by aigles on Tuesday 7th of November 2006 07:52:58 AM
Old 11-07-2006
Try and adapt the following script (based on cal command output) :
Code:
day=${1:-$(date +%e)}
month=${2:-$(date +%m)}
year=${3:-$(date +%Y)}

#
# Determine week in the month
#

wmonth=${month}
wyear=${year}

cal ${wmonth} ${wyear} | \
awk -v day="$day" '
        /^[[:digit:][:space:]]*$/ && NF>0 {
           if (substr($0, 1, 2) != "  ") wm += 1;
              for (i=1; i<=NF; i++) {
                if ($i+0 == day+0) {
                    print wm;
                    exit;
                 }
              }
           }
    ' | read week

#
# Determine week in previous month
#

if [ -z "${week}" ]
then

   # Previous month/year

   (( wmonth = month - 1 ))
   if (( wmonth == 0 ))
   then
      wmonth=12
      (( wyear -= 1))
   fi

   # Determine week

   cal ${wmonth} ${wyear} | \
   awk '
        /^[[:digit:][:space:]]*$/ && NF>0 {
           if (substr($0, 1, 2) != "  ") wm += 1;
        } 
        END { print wm }
    ' | read week
fi

#
# Display result
#

echo "Date = ${day}-${month}-${year}, Week.Month.Year = ${week}.${wmonth}.${wyear}"

Examples:
Code:
$ wm.ksh
Date =  7-11-2006, Week.Month.Year = 1.11.2006

$ wm.ksh 1 11
Date = 1-11-2006, Week.Month.Year = 5.10.2006


Jean-Pierre.
 

7 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies

2. HP-UX

[Solved] crontab issue "day of week"

Is there an issue with running a cron entry like the below entries? 0 2 21 12 2 cd /usr/local/bin;./cksecurity.sh -f /home/theninja/security.dat21 I wanted this to run on Tues at 2am, which it did successfully, however I also had the following entry to run next tuesday that also ran on 12/21.... (3 Replies)
Discussion started by: theninja
3 Replies

3. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

4. Solaris

The slices "usr", "opt", "tmp" disappeared!!! Help please.

The system don't boot. on the screen appears following: press enter to maintenance (or type CTRL-D to continue)...I checked with format command. ... the slices "0-root","1-swap","2-backup" exist. ...the slises "3-var","6-usr" -unassigned. :( (16 Replies)
Discussion started by: wolfgang
16 Replies

5. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

6. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

7. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies
date(1) 						      General Commands Manual							   date(1)

Name
       date - print date and time

Syntax
       date [-c | -u] [ +format ] [[yy[mm[dd]]]hhmm[.ss][-[-]tttt][z]]

Description
       If no argument is given, or if the argument begins with +, the current date and time are printed.  Otherwise, the current date is set.  The
       first mm is the month number; dd is the day number in the month; hh is the hour number (24 hour clock); the second mm is the minute number;
       .ss  the second; -[-]tttt is the minutes west of Greenwich; a positive number means your time zone is west of Greenwich (for example, North
       and South America) and a negative number means it is east of Greenwich (for example Europe); z is a one letter code indicating the dst cor-
       rection mode (n=none, u=usa, a=australian, w=western europe, m=middle europe, e=eastern europe); yy is the last 2 digits of the year number
       and is optional.  The following example sets the date to Oct 8, 12:45 AM:
       date 10080045
       The current year is the default if no year is mentioned.  The system operates in GMT.  The takes care of the conversion to and  from  local
       standard and daylight time.

       If  the	argument begins with +, the output of is under the control of the user.  The format for the output is similar to that of the first
       argument to All output fields are of fixed size (zero padded if necessary).  Each field descriptor is preceded by % and is replaced in  the
       output by its corresponding value.  A single % is encoded by %%.  All other characters are copied to the output without change.	The string
       is always terminated with a new-line character.

Options
       -c     Perform operations using Coordinated Universal Time (UCT) instead of the default local time. The UCT does not use  leap  seconds	so
	      UCT is the same as GMT.

       -u     Perform operations using Greenwich Mean Time (GMT) instead of the default local time.

       + format
	      The following is a list of field Descriptors that can be used in the format (Note: date exits after processing format information) :

		 %a   Locale's abbreviated weekday name

		 %A   Locale's full weekday name

		 %b   Locale's abbreviated month name

		 %B   Locale's full month name

		 %c   Locale's date and time representation

		 %d   Day of month as a decimal number (01-31)

		 %D   Date (%m/%d/%y)

		 %h   Locale's abbreviated month name

		 %H   Hour as a decimal number (00-23)

		 %I   Hour as a decimal number (01-12)

		 %j   Day of year (001-366)

		 %m   Number of month (01-12)

		 %M   Minute number (00-59)

		 %n   Newline character

		 %p   Locale's equivalent to AM or PM

		 %r   Time in AM/PM notation

		 %S   Second number (00-59)

		 %t   Tab character

		 %T   Time (%H/%M/%S)

		 %U   Week number (00-53), Sunday as first day of week

		 %w   Weekday number (0[Sunday]-6)

		 %W   Week number (00-53), Monday as first day of week

		 %x   Locale's date representation

		 %X   Locale's time representation

		 %y   Year without century (00-99)

		 %Y   Year with century

		 %Z   Timezone name, no characters if no timezone

		 %%   %

Examples
       The following command line
       date +%m/%d/%y
       generates the following output
       04/02/89
       The following command line
       date +"DATE: %m/%d/%y%nTIME: %H:%M:%S"
       generates the following output
       DATE: 04/02/89
       TIME: 14:45:05
       The quotes (") are necessary because the format contains blank characters. Use single quotes (') to prevent interpretation by the shell.

Diagnostics
       Failed to set date: Not owner
	    You are not the super-user and you tryed to change the date.  Do not change the date while the system is running in multiuser mode.

Restrictions
       An attempt to set a date to before 1/1/1970 will result in the date being set to 1/1/1970.

Files
       /dev/kmem

																	   date(1)
All times are GMT -4. The time now is 12:48 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy