how can I transform the string \"620/100\" into \"6.2\" in a bash script
The context of my question is about image processing. EXIF data are coding the focal length in f
bash
doesn't support floating point.
You could use bc
:
$ echo "50/10" | bc -l
5.00000000000000000000
$ echo "scale=1; 50/10" | bc -l
5.0
Use bc -l
bc -l <<< "scale=2; 620/100"
6.20
OR awk:
awk 'BEGIN{printf "%.2f\n", (620/100)}'
6.20
Thank-you for the answers. bc was what I needed.
I dont know if posting the result is of any use. Anyway, this the final piece of code for exteracting the focal length of a photo and print it in decimal format. It is supposed to work for all cameras. Tested on 4 cameras of 3 different brands.
F="your_image.JPG"
EXIF=$(exiv2 -p v "$F")
FocalFractional=$( echo "$EXIF" | grep -E '[^ ]* *Photo *FocalLength '| grep -iohE "[^ ]* *$" )
Formula="scale=2; "$FocalFractional
FocalDecimal=$( bc -l <<< "$Formula" )
echo $ FocalDecimal