need to keep the "0" in "01"


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting need to keep the "0" in "01"
# 1  
Old 01-25-2008
need to keep the "0" in "01"

System = AIX
scripting = ksh
me = fairly new to this.

I hope this has not been asked already.

Scenario:
grep'ing for information out of files with a naming convention as such....
2008_01*. I will be performing my grep on these file names during the month after (i.e. 02).

Problem:
When I try to subtract "02" - "01", get "1". This makes sense seeing as how most calculations drop the preceding "0"
I need to keep that "0" to perform my grep.

Code:
# ======> GET YEAR & MONTH ***
#export YEAR=`date +%Y`
#export MNTH=`date +%m`
export YEAR=2008
export MNTH=02

# **************************************
# *** FIND PREVIOUS MONTH/YEAR VALUE ***
# **************************************
if [ $MNTH!=01 ]
then
(( MNTH=$MNTH-01 ))
YEAR=$YEAR
else
if [ $MNTH=01 ]
then
MNTH=12
(( YEAR=$YEAR-1 ))
fi
fi

***NOTE ~ (( YEAR=$YEAR-1 )) works perfectly.
!!!!!The above statement is now incorrect!!!!!

I would prefer to keep it as simple as it is now, however all help is appreciated. I would consider using sed or awk to add the "0" in, however an example or two of how to do that would be great.

Last edited by cml2008; 01-26-2008 at 12:15 AM.. Reason: statement is now incorrect
# 2  
Old 01-25-2008
add a line
Code:
MNTH=$(printf "%02d" $MNTH)

# 3  
Old 01-25-2008
Jim,

Excellent, that worked! Smilie

I see that I will have to take some time to decipher all of the parameters for printf in the man pages!

That being said, maybe you can help me know with the later half of the "if" statement.

if [ $MNTH!=01 ]
then
(( MNTH=$MNTH-01 ))
MNTH=$(printf "%02d" $MNTH)
YEAR=$YEAR
else
if [ $MNTH=01 ]
then
MNTH=12
(( YEAR=$YEAR-1 ))


in red now prints out as such 00/2009


again that is very cool about the printf, thanks for you help.Smilie
# 4  
Old 01-25-2008
just guessing, but do you need to use "==" when comparing instead of "="? Most scripts are the same in that regard "=" is for assigning values, "==" is for comparing values.
# 5  
Old 01-26-2008
KevinADC,

I looked into your suggestion and added the extra "=" however it did not make a difference in comparing the "value".

I believe this because the compare happens within [ ].
# 6  
Old 01-26-2008
My theory is that the "printf" command is overriding the second "if" statement.
I have tried to read through the man pages on printf, however that seems to be a bit cumbersome, does anybody know if the "printf" command is overriding my second "if" statement? If so do I have to put in another "printf" command to format the variable "$MNTH" to = 12?
Quote:
if [ $MNTH!=01 ]
then
(( MNTH=$MNTH-01 ))
MNTH=$(printf "%02d" $MNTH)
YEAR=$YEAR
else
if [ $MNTH=01 ]
then
MNTH=12
(( YEAR=$YEAR-1 ))

in red now prints out as such 00/2009

Last edited by cml2008; 01-26-2008 at 11:42 AM.. Reason: grammatical errors
# 7  
Old 01-26-2008
Each item in the test must be separated by spaces.

wrong: [ $MNTH!=01 ]
right: [ $MNTH != 01 ]
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

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. Shell Programming and Scripting

how to use "cut" or "awk" or "sed" to remove a string

logs: "/home/abc/public_html/index.php" "/home/abc/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" how to use "cut" or "awk" or "sed" to get the following result: abc abc xyz xyz xyz (8 Replies)
Discussion started by: timmywong
8 Replies

6. 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

7. Shell Programming and Scripting

ps -ef | grep "string1" "string2" " "string3"

Hi all, can any one suggest me the script to grep multiple strings from ps -ef pls correct the below script . its not working/ i want to print OK if all the below process are running in my solaris system. else i want to print NOT OK. bash-3.00$ ps -ef | grep blu lscpusr 48 42 ... (11 Replies)
Discussion started by: steve2216
11 Replies

8. Shell Programming and Scripting

cat $como_file | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g'

hi All, cat file_name | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g' Can this be done by using sed or awk alone (4 Replies)
Discussion started by: harshakusam
4 Replies

9. 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
Login or Register to Ask a Question