Incrementing parts of ten digits number by parts


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Incrementing parts of ten digits number by parts
# 22  
Old 10-10-2013
Quote:
Originally Posted by ctsgnb
You could check the value of $n like this (i guess you forgot what is in red below) :

Code:
n=$(sort /Users/Natalie/1/kuku.txt | tail -1)
echo $n
exit

When you make sure the value is correct you can then remove the exit
Oh yeah thank u finally, I spend 2 hours for finding out what is wrong....its so easy lol thanks SmilieSmilieSmilie
# 23  
Old 10-10-2013
Quote:
Originally Posted by Natalie
Oh yeah thank u finally, I spend 2 hours for finding out what is wrong....its so easy lol thanks SmilieSmilieSmilie
Now you have to fix your code so that is handle the case of months that only have 30 days ... or 28 days ... or leap year ! Smilie
# 24  
Old 10-10-2013
So sorry..I faced to a little problem. Basically everything is working...but 2013101008 is the maximum number which works in code... it says in error that value is too great for base ("error token is 08").
basically problem with the format...i need all numbers from 01 01 to 099 100 in this format. But in this code i just put 0 in front of number when print it.
Can i transform number before statements in the beginning of the code or smth like that?
# 25  
Old 10-10-2013
Code:
#!/bin/bash --posix
# Apple Macbook Pro 13", circa 10-08-2012, OSX 10.7.5, default bash terminal.
# 
# Now obtain any date and add 00 to 099 at the end.
# It is simple to add the last 100 after every day.
# You may have to change pieces to suit you environment and OS etc...
for newdate in {0..365}
do
	# Get epoch time and use IT to do all of the hard work...
	secs=$(date +"%s")
	secs=$[ ( ( ( $secs / 86400 ) * 86400 ) + ( $newdate * 86400 ) ) ]
	for n in {0..99}
	do
		# Date WITH spaces...
		# currentdate=$(date -r $secs +"%Y %m %d")
		# Date WITHOUT spaces...
		currentdate=$(date -r $secs +"%Y%m%d")
		data="0$n"
		# Result WITH spaces...
		# currentdate="$currentdate $data"
		# Result WITHOUT spaces...
		currentdate="$currentdate$data"
		echo "$currentdate"
	done
done
# Now all you have to do is add your I/O and any comparing parts...

This will print a whole years worth of dates with extensions of 00 to 099 to STDOUT.
Code:
AMIGA:barrywalker~> ./Up_Date.sh
2013101100
2013101101
2013101102
2013101103
2013101104
2013101105
2013101106
2013101107
2013101108
2013101109
20131011010
20131011011
20131011012
20131011013
20131011014
20131011015
20131011016
20131011017
20131011018
20131011019
20131011020
20131011021
20131011022
.
.
.
.
.
.
20141011077
20141011078
20141011079
20141011080
20141011081
20141011082
20141011083
20141011084
20141011085
20141011086
20141011087
20141011088
20141011089
20141011090
20141011091
20141011092
20141011093
20141011094
20141011095
20141011096
20141011097
20141011098
20141011099
AMIGA:barrywalker~>


Last edited by wisecracker; 10-10-2013 at 09:51 PM.. Reason: Typo in none code line...
# 26  
Old 10-10-2013
I got the idea, thanks. You helped me a lot. But my last numbers goes only until 09 and then it starts from 02 again. Why? it does not reach even 100 for incrementing days or months.... Sorry just I try to do my best to fix code but I am not good at programming I guess....

Code:
if [ -f "kuku.txt" ]
     then

n=$(sort /Users/Natalie/1/kuku.txt | tail -1)
fourthoct=${n:0:4}
thirdoct=${n:4:2}
secondoct=${n:6:2}
firstoct=${n:8:2}

  wardevent=$(expr $firstoct + 0);
  if [ ! $((++wardevent)) -eq 100 ]
                 then
                      data="0$wardevent"
                  else
                    firstoct=0
                    data="0$firstoct"
                   if [ $((++secondoct)) -eq 32 ]
                         then
                        secondoct=0
                         if [ $((++thirdoct)) -eq 13 ]
                               then
                                thirdoct=0
                                   ((++fourthoct))

fi
fi
fi

printf  $fourthoct$thirdoct$secondoct$data > '/Users/Natalie/1/kuku.txt'
      else
echo ` date +%Y%m%d`"00" >'/Users/Natalie/1/kuku.txt'
fi


Last edited by Natalie; 10-10-2013 at 11:07 PM..
# 27  
Old 10-10-2013
Couple of things to not the shell treats numbers with leading zero as octal so you need strip leading zero off before doing any maths on them, this is why when you reach 08 things started to break.

Also let printf do the heavy lifting for you, it can format with leading zeros automatically


Try this:

Code:
if [ -f "/Users/yerlanrsaldin/1/kuku.txt" ]
then
  n=$(sort /Users/yerlanrsaldin/1/kuku.txt | tail -1)

  fourthoct=${n:0:4}
  thirdoct=${n:4:2}
  thirdoct=${thirdoct#0}
  secondoct=${n:6:2}
  secondoct=${secondoct#0}
  firstoct=${n:8:2}
  firstoct=${firstoct#0}

  if [ $((++firstoct)) -eq 100 ]
  then
      firstoct=0
      if [ $((++secondoct)) -eq 32 ]
      then
          secondoct=0
          if [ $((++thirdoct)) -eq 13 ]
          then
              thirdoct=0
              ((++fourthoct))
          fi
      fi
  fi
  
  printf  "%04d%02d%02d%02d\n" $fourthoct $thirdoct $secondoct $firstoct > '/Users/yerlanrsaldin/1/kuku.txt'
else
  echo ` date +%Y%m%d`"00" >'/Users/yerlanrsaldin/1/kuku.txt'
fi

# 28  
Old 10-10-2013
Thank ya Smilie One more thing which is not relating to question: how delete threads or close here?! cant figure out Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to get first four parts of the string?

I have the string: XXXX.YYYY_ZZZ.20180724.01.txt I need to get rid of .txt and get full four parts XXXX.YYYY_ZZZ.20180724.01 I did: CTL=`echo XXXX.YYYY_ZZZ.20180724.01.txt | rev | cut -d"." -f4 | rev` But got only YYYY_ZZZ What should I do to get all four parts of that... (4 Replies)
Discussion started by: digioleg54
4 Replies

2. Shell Programming and Scripting

Getting various parts from the log

I am dealing with some app log, see example below: 22:16:13.601 ClientSession(905)--Connection(5)--SELECT GETDATE() 22:16:13.632 ClientSession(158)--Connection(5)--SELECT 1 22:16:13.632 ClientSession(848)--Connection(6735)--SELECT 1 So far I needed to collect certain column from it, such as... (3 Replies)
Discussion started by: migurus
3 Replies

3. Shell Programming and Scripting

Combine two parts of a file

Hello All, I have a file like this APPLY ( 'INSERT INTO brdcst_media_cntnt ( cntnt_id ,brdcst_media_cntnt_cd ,cntnt_prvdr_cd ,data_src_type_cd ,cntnt_titl_nm ,cntnt_desc ,batch_dt ,batch_id ) VALUES ( :cntnt_id (3 Replies)
Discussion started by: nnani
3 Replies

4. Shell Programming and Scripting

Extract Parts of File

Hello All, I have a file like this Define schema flat_file_schema ( a varchar(20) ,b varchar(30) ,c varchar(40) ); (Insert into table ( a ,b ,c ) values ( 1 ,2 ,3 ); (4 Replies)
Discussion started by: nnani
4 Replies

5. Shell Programming and Scripting

Parts is parts, but all together ...

I understand the individual pieces of the following (with one exception ..), but how does it all work as one? find ${HOME}/reports/ -name surveyresult*.txt -exec ls -1 {} \; | /usr/xpg4/bin/grep -E \ "${HOME}/reports/surveyresult{14,14}.txt" | sort > ${ResultsFileList} Find all files like... (1 Reply)
Discussion started by: jdorn001
1 Replies

6. Shell Programming and Scripting

[ask]break line number into several parts

hlow all, i have file with wc -l file.txt is 3412112 line number so I want to break these files into several parts with assumsi line 1-1000000 will be create part1.txt and 1000001-2000000 will create part2.txt and 2000001-3000000 will create part3.txt and 3000001-3412112 will create... (5 Replies)
Discussion started by: zvtral
5 Replies

7. Shell Programming and Scripting

Extracting parts of a file.

Hello, I have a XML file as below and i would like to extract all the lines between <JOB & </JOB> for every such occurance. The number of lines between them is not fixed. Anyways to do this awk? ============ <JOB APR="1" AUG="1" DEC="1" FEB="1" JAN="1" JUL="1" JUN="1" MAR="1" MAY="1"... (3 Replies)
Discussion started by: srivat79
3 Replies

8. Shell Programming and Scripting

getting parts of a file

Hello, I'm trying to retreive certain bits of info from a file. the file contains a list like this info1:info2:info3:info4 info1:info2:info3:info4 info1:info2:info3:info4 info1:info2:info3:info4 how do i pick out only info2 or only info3 without the others? Thanks (11 Replies)
Discussion started by: bebop1111116
11 Replies

9. UNIX for Dummies Questions & Answers

cksum parts of a file

Every time we build an executable the date and time are put into the file, I need to run checksum on just the working lines.(IE, no header files) Is this even possible, if so how would I go about it? I am using a HP-UX server any help you can give me will be greatly appreciated. Thanks (6 Replies)
Discussion started by: crazykelso
6 Replies
Login or Register to Ask a Question