Passing Day in string


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Passing Day in string
# 1  
Old 02-07-2019
Passing Day in string

I need to pass days in past 3, 4, 5 day in strings.

Today is Feb 7, so past 3, 4, 5 days are:

Code:
day1="Feb 2"
day2="Feb 3"
day3="Feb 4"

I have set day1 day2 day3 as the variables. So, what I need is to have the day stings to be past 3, 4, 5 days every day.

If it Feb 8, they need to be:
Code:
day1="Feb 3"
day2="Feb 4"
day3="Feb 5"

If it Feb 9, they need to be:
Code:
day1="Feb 4"
day2="Feb 5"
day3="Feb 6"

and so on.

The format of string needs to "Feb 3" (Uppercase for the first letter, Jan, Feb, Mar, etc; space ; numeric for the day of the month).

Thank you so much for your help!
# 2  
Old 02-07-2019
Please provide information on your attempts to resolve.

Until so, we will refrain from sharing any guidance.

The purpose of this Board is the assist users in solving their problems. We are not a coding service. Further, we are not a homework service - and sometimes posts appear to be an attempt to have someone solve a school assignment.

Finally, we urge all members of the Forum to NOT post a solution to this question until effort to resolve is demonstrated.
# 3  
Old 02-07-2019
This is what I have so far, and I am kind of doing manual coding every day for day1, day2, day3
But, I like to automate it so that I can eliminate manual coding. Thank you!

Code:
print_cleanup_exec=$cer_log/print_cleanup_output.log
exec 1> $print_cleanup_exec
day1="Feb 2"
day2="Feb 3"
day3="Feb 4"

echo "-------------------------------------------------------" > ${print_cleanup}
echo "Header to print cleanup file :   \n"  >> ${print_cleanup}
echo "         Date : `date`  \n" >> ${print_cleanup}
echo " " >> ${print_cleanup}
prior=`lpstat -o |grep -v bytes |wc -l`
cleaned=`lpstat -o |grep -v bytes |sort -nkb1 |grep -v "${day1}" |grep -v "${day2}" |grep -v "${day3}" |wc -l `
....... snipped .........

# 4  
Old 02-07-2019
Welcome to the forum.


Please get accustomed to providing system details like OS, shell, tools' versions, so people can taylor their proposals.

Do you have a date version that offers the -d (--date=STRING) ?
Code:
$ date +"%b %_d" -d"2 day ago"
Feb  5

# 5  
Old 02-07-2019
Thank you, RudiC!

Code:
root:root> uname -a
HP-UX B.11.31 U ia64 0123365846 unlimited-user license

It is HP-UX, so it is kind of tough.. I am getting this error

Code:
root:> date +"%b %_d" -d "2 day ago"
date: bad format character - _

# 6  
Old 02-07-2019
check LOCALE value for cal format, try:

Code:
date=$(date +"%d %m %Y")
#date="8 2 2019"

echo $date | read tday x

past_days="3,4,5"
max_past_day="${past_days##*,}"

echo "$date" | awk '
{
   m=$2; y=$3;
   if ($1 <= mpd) {
      mm=m; yy=y;
      if (mm-1 < 1) { mm=12; yy=y-1; } else { mm--; }
      print "cal ", mm, yy
   }
   print "cal ", m, y
}
' mpd=$max_past_day | sh | awk '
length($1) > 3 {month=substr($1, 1, 3)}
$1+=0 == $1  {for (i=1; i<=NF; i++) {days[c++]=month FS $i; daysa[d++]=$i;}}
END {
   sc=split(past_days, pdays, ",");
   for (j=1; j<=sc; j++) ppdays[pdays[j]]=pdays[j];
   for (i=c-1; i>=0; i--) {
      if (daysa[i]==tday) ptr=1;
      if (ptr && (prtc++ in ppdays)) out[outc++]=days[i];
   }
   for (i=outc-1; i>=0; i--) print "day" (++k) "=\"" out[i] "\"";
}
' tday=$tday past_days="$past_days"

This User Gave Thanks to rdrtx1 For This Post:
# 7  
Old 02-07-2019
Everything my dear colleague RudiC said applies, but also, just to show you that posting your stuff is a rewarding activity:

Quote:
Originally Posted by danielshell
Code:
prior=`lpstat -o |grep -v bytes |wc -l`

Under NO circumstances you should use backticks any more! If you are not the rare exception who uses an original Bourne shell from the time computers ran on steam instead of electrical power you have a shell that can (and should) use "POSIX style" subshells:

Code:
prior=$(lpstat -o |grep -v bytes |wc -l)

Quote:
Originally Posted by danielshell
Code:
cleaned=`lpstat -o |grep -v bytes |sort -nkb1 |grep -v "${day1}" |grep -v "${day2}" |grep -v "${day3}" |wc -l `

The same applies here but in addition the grep can be straightened. The sort is superfluous because you want to know the number of lines at the end which is independent of the sorting:

Code:
cleaned=$( lpstat -o | grep -ve bytes -ve "${day1}" -ve "${day2}" -ve "${day3}" | wc -l )

I hope this helps.

bakunin
This User Gave Thanks to bakunin For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Passing string from bash to sqlplus

Hello, I have file (PARFILE) with string on first line: INCLUDE=SCHEMA:"IN\( 'SCHEMA1','SCHEMA2','SCHEMA3' \)"In .sh script I use: .... IMPORT_SCHEMA=`awk 'NR==1{print $2}' ${PARFILE}` ...print $2 is because 'SCHEMA1','SCHEMA2','SCHEMA3' is 2nd column in file echo "$IMPORT_SCHEMA"... (5 Replies)
Discussion started by: DjukaZg
5 Replies

2. Homework & Coursework Questions

passing letters from an array into a string for string comparison

attempting the hangman program. This was an optional assignment from the professor. I have completed the logical coding, debugging now. ##I have an array $wordString that initializes to a string of dashes ##reflecting the number of letters in $theWord ##every time the user enters a (valid)... (5 Replies)
Discussion started by: lotsofideas
5 Replies

3. Shell Programming and Scripting

Reading a string and passing passing arguments to a while loop

I have an for loop that reads the following file cat param.cfg val1:env1:opt1 val2:env2:opt2 val3:env3:opt3 val4:env4:opt4 . . The for loop extracts the each line of the file so that at any one point, the value of i is val1:env1:opt1 etc... I would like to extract each... (19 Replies)
Discussion started by: goddevil
19 Replies

4. Shell Programming and Scripting

Passing varibles as a string argument ?

For example test.sh: test="teststring" cmd=$1 $cmd For some reason I'm NOT seeing "teststring" when I type: ./test.sh "echo $test" Any ideas on how to get around this? I've tried commands like: ./test.sh "echo $($test)" ./test.sh "echo '$test'" And many variations to no... (6 Replies)
Discussion started by: secops
6 Replies

5. UNIX for Dummies Questions & Answers

Day of the week from a string

Hi All, I need to know how to derive the day of the week by passing the value in following format: Feb 28 2010 The output I'm expecting is Sunday or Sun. I know, I can use the following code to get the day of the week. date +%a But I want to pass the value as a string. Please help... (11 Replies)
Discussion started by: shash
11 Replies

6. Shell Programming and Scripting

passing string which includes metacharacters

I'm trying to create a bash script that takes a URL as one of its arguments like this: ./script.sh http://url.cfm?asdf&asdf=234 variable=$1 echo $variable I'm having trouble storing the URL because it contains the meta character "&" which is being interpreted... thus when I run the... (4 Replies)
Discussion started by: kds1398
4 Replies

7. Shell Programming and Scripting

Help needed passing string to command

hi to all code: </div> command... "command_name arg1 arg2 option=xxxxx" example --- useradd username group=xxxxxx. </div> when someone ran this command it point to some other script (say script1), mean post execution of command. in the script1 i need only "xxxxx" value. then i... (5 Replies)
Discussion started by: honeym210
5 Replies

8. Shell Programming and Scripting

Passing string variables

HI all, Very new to shell programming and just wanted some help on how to solve the following problem. I have a small shell script which searches a given file and extracts some string parameters. I want to now be able to call this script from another shell script and somehow pass the parameters... (11 Replies)
Discussion started by: pxy2d1
11 Replies

9. Shell Programming and Scripting

Passing string from function with '*'

Hi I have a shell function which returns string(ksh). The string is an sql statement. This statement can have '*' in its content (i.e. select 100 / 2 *100 from dual). When this happens ret_str will have contents of current directry I run the script from build in sql. Is there any way to fix it... (2 Replies)
Discussion started by: zam
2 Replies

10. Shell Programming and Scripting

Passing a string parameter to a function

I need to pass a parameter to a function in a script. My parameter is a string. When I display the parameter within my function, I only get the first word from string I pass in. How can I make the function receive the whole string (and not terminate at the first space it encounters)?. part of... (1 Reply)
Discussion started by: fastgoon
1 Replies
Login or Register to Ask a Question