15

how to remove decimal place in shell script.i am multiplying MB with bytes to get value in bytes .I need to remove decimal place.

ex:-
196.3*1024*1024
205835468.8
expected output
205835468
RanjitRock
  • 1,421
  • 5
  • 20
  • 36

2 Answers2

32

(You did not mention what shell you're using; this answer assumes Bash).

You can remove the decimal values using ${VAR%.*}. For example:

[me@home]$ X=$(echo "196.3 * 1024 * 1024" | bc)
[me@home]$ echo $X
205835468.8
[me@home]$ echo ${X%.*}
205835468

Note that this truncates the value rather than rounds it. If you wish to round it, use printf as shown in Roman's answer.

The ${variable%pattern} syntax deletes the shortest match of pattern starting from tbe back of variable. For more information, read http://tldp.org/LDP/abs/html/string-manipulation.html

Community
  • 1
  • 1
Shawn Chin
  • 84,080
  • 19
  • 162
  • 191
14

Use printf:

printf %.0f $float

This will perform rounding. So if float is 1.8, it'll give you 2.

Roman Byshko
  • 8,591
  • 7
  • 35
  • 57