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)
# 1  
Old 01-10-2017
Converting String To Integer/Float (weird case)

Hi guys,

I'm new here. I have a problem at work. One of our scripts was eventually having a bug and only detected recently. Here's the issue and background:

Bash Script which calls AWK script

Awk script returns a string as per below (example):
Code:
var1='00000-123'

So, when we convert it, the value becomes 0 and it messes up with our grand total of that var1.

Any idea how can I convert above string into -123?

Last edited by rbatte1; 01-10-2017 at 11:41 AM.. Reason: Added CODE tags
# 2  
Old 01-10-2017
you probably need to fix your awk, but YMMV:
Code:
echo '00000-123'| bc


Last edited by vgersh99; 01-10-2017 at 11:14 AM..
# 3  
Old 01-10-2017
Hello sekfarok,

Could you please try following.
Code:
echo $var1 | awk '{sub(/^0+/,"");printf("%d\n",$0)}'
OR
echo $var1 |  bc

Thanks,
R. Singh
# 4  
Old 01-10-2017
Quote:
Originally Posted by vgersh99
YMMV:
Code:
echo '00000-123'| bc

Wonder where shall i put it in my code. basically my awk script looks like below:

Code:
BEGIN {
some codes here
}
#so it search for some Trailer with T as indicator
/^T/{
       var1=substr($0,100,9);  <-- this part grep the '00000-123'
       print var1;
}
END

Smilie
# 5  
Old 01-10-2017
Hello sekfarok,

Could you please try changing var1=substr($0,100,9); to var1=substr($0,106,4);, off course not tested it as lack of complete details and sample Input_file.

Thanks,
R. Singh
# 6  
Old 01-10-2017
Quote:
Originally Posted by sekfarok
Wonder where shall i put it in my code. basically my awk script looks like below:

Code:
BEGIN {
some codes here
}
#so it search for some Trailer with T as indicator
/^T/{
       var1=substr($0,100,9);  <-- this part grep the '00000-123'
       print var1;
}
END

Smilie
can you show a sample file/output that this awk is trying to parse?
# 7  
Old 01-10-2017
ahh sorry.

Currently (ignore the position). Let say i have a few records with 15 character long (fixed length).

Input
Code:
T00001000000234
T0000200000-123     <-- this should become -123
T00003000000234
T00004000000234
T00005000-11234     <-- this should become -11234
T00006000000234
T00007000000234


the var1 should be something like: var1=substr($0,7,9)

and record 2 and 5 are having '-' sign but in different position. Hope this is enough sample.

Last edited by vgersh99; 01-10-2017 at 11:34 AM.. Reason: code tags, please!
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