Converting String To Integer/Float (weird case)


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Converting String To Integer/Float (weird case)
# 15  
Old 01-10-2017
It isn't really clear to me what you're trying to do in cases where there is no <hyphen> character in your output from awk. Is a return value like 000000234 to remain unchanged or do you want to remove leading zeros?

If you always want to remove leading zeros (and never have a string that is all zeros and don't want to change your awk script, you don't need to use bc to perform your arithmetic; it can all be done with variable expansions:
Code:
$ x=000000234
$ echo ${x##*[^1-9-]}
234
$ x=0-123456
$ echo ${x##*[^1-9-]}
-123456
$ 

These 2 Users Gave Thanks to Don Cragun For This Post:
# 16  
Old 01-10-2017
Quote:
Originally Posted by RudiC
Try
Code:
awk '{X = substr ($1,7,9); sub (/^0+/, "", X); print X}' file
234
-123
234
234
-11234
234
234

Thank you so much. tested your solutions and it works. all my calculations are correct too now SmilieSmilie
# 17  
Old 01-11-2017
Quote:
Originally Posted by Don Cragun
It isn't really clear to me what you're trying to do in cases where there is no <hyphen> character in your output from awk. Is a return value like 000000234 to remain unchanged or do you want to remove leading zeros?

If you always want to remove leading zeros (and never have a string that is all zeros and don't want to change your awk script, you don't need to use bc to perform your arithmetic; it can all be done with variable expansions:
Code:
$ x=000000234
$ echo ${x##*[^1-9-]}
234
$ x=0-123456
$ echo ${x##*[^1-9-]}
-123456
$ 

Sadly it is not entirely foolproof:-
OSX 10.12.2, default bash terminal.
Here 230 is a valid number.
Code:
Last login: Wed Jan 11 18:39:25 on ttys000
AMIGA:amiga~> x=000000230
AMIGA:amiga~> echo ${x##*[^1-9-]}

AMIGA:amiga~> _

# 18  
Old 01-11-2017
Try echo ${x#${x%%[1-9-]*}}, then.
These 3 Users Gave Thanks to RudiC For This Post:
# 19  
Old 01-12-2017
Unfortunately, the code I suggested in post #15 only works if all zeros in the string are leading zeros. Smilie Fortunately, RudiC posted the fix that does what I was trying to do in post #18. Smilie

Thanks RudiC! Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Converting string to integer

I have a function that is supposed to check for user processes and wait for 0 count before exiting the function. I am sure I have more than one issue in my code, but the stumbling block right now is that I am trying to convert the value of my variable from a string to integer. process_count... (10 Replies)
Discussion started by: MIA651
10 Replies

2. Shell Programming and Scripting

Converting date +%j into integer

Dear community, i got a problem to get "date +%j" as the right value. Today is the 10th day of the year. #./script.sh 2 #!/bin/bash/ Var1=$(date +%j) Var2=$1 let result=$Var1+$Var2 echo $Var1 plus $Var2 equals $result The output of the script is: 010 plus 2 equals 10... (9 Replies)
Discussion started by: OskarHF
9 Replies

3. Shell Programming and Scripting

Converting Month into Integer

okay so i run an openssl command to get the date of an expired script. Doing so gives me this: enddate=Jun 26 23:59:59 2012 GMT Then i cut everything out and just leave the month which is "Jun" Now the next part of my script is to tell the user if the the certificate is expired or not... (6 Replies)
Discussion started by: shade917
6 Replies

4. Shell Programming and Scripting

converting to lower case or upper case

here is a code column_name="vivek" column_name2="ViVeK" column_name=$(echo $column_name | awk '{print tolower($0)}') column_name2=$(echo $column_name2 | awk '{print tolower($0)}') echo "column name 1 lower: $column_name" echo "column name... (6 Replies)
Discussion started by: vivek d r
6 Replies

5. UNIX for Advanced & Expert Users

byte swapping 32-bit float and weird od results

I'm attempting to read a file that is composed of complex 32-bit floating point values on Solaris 10 that came from a 64-bit Red Hat computer. When I first tried reading the file, it looked like there was a byte-swapping problem and after running the od command on the file Solaris and Red Hat... (2 Replies)
Discussion started by: GoDonkeys
2 Replies

6. Shell Programming and Scripting

Converting integer to String

Hi everyone, I would like to know how to convert an integer to a string. for instance if i=1 i would like to creat a variable called constant1. i want to do this in a for loop so for each value of i, i create a new variable such as constant2, constant3,... and so on. for i in 1 2 3 do ... (1 Reply)
Discussion started by: ROOZ
1 Replies

7. UNIX for Dummies Questions & Answers

Converting a String variable into Integer

Hi, I am passing a variable to a unix function. However when I try to assign the value to another variable like typeset -i I_CACHE_VAL=$2 Is this because of String to Integer conversion? I get an error. Please help me with thsi. Thanks (2 Replies)
Discussion started by: neeto
2 Replies

8. Shell Programming and Scripting

Converting the case of the string?

Hi i have a string value in a variable STR eg. STR="ABSDSCSFS" How can be convert it to LOWERCASE in the script? Thanks (5 Replies)
Discussion started by: skyineyes
5 Replies

9. Shell Programming and Scripting

command for converting string to integer

Hi ... I am trying to calculate the time needed for a command to execute.. but the resulting value is getting as string.. so i am not able to use "expr " command.. please help me to convert the value to integer so that i can proceed with my script.. Regards esham (1 Reply)
Discussion started by: esham
1 Replies

10. UNIX for Dummies Questions & Answers

Integer/Float Script Problem

Hi, I have a script which takes a value from a file and performs calculations on it. Trouble is that this value is a float not an integer and it errors at the decimal point! eg. 94.62 I would like to be able to detect the length of the float (in this above case, 5 characters), and simply do a... (2 Replies)
Discussion started by: danhodges99
2 Replies
Login or Register to Ask a Question