I have the following values in my file:
1.5000
0.006
9.0001
104.2500
17.0000
3.5000
paper
I want to remove the trailing zero, the following awk
will remove the trailing zeros but print zeros for character value:
awk '{a=$0+0;if (a!~/\./) a=a".0";print a}' file
Output of above awk
:
1.5
0.006
9.0001
104.25
17
3.5
0.0
How to modify the awk
to skip the characters?
Excepted output:
1.5
0.006
9.0001
104.25
17.0
3.5
paper
Using sed
:
sed 's/,\([0-9]*[.]0\?\)\(\(0*[1-9]\+\)*\)0*/,\1\2/' input
This gives:
1.5
0.006
9.0001
104.25
17.0
3.5
paper
For a multi-column file:
awk '$2~/^[0-9]+[.][0-9][1-9]*0+$/{
$2=gensub(/([.]0?([0-9]*[1-9]+)?)0*$/, "\\1", "g", $2)}1' input
awk ' {print $2}' yourinputfile | awk ' { sub("\\.*0+$","");print} '
Hope it helps.
Here is how to do it:
awk '/^ *[0-9]+\.[0-9]+/{sub(/0+$/,"");sub(/\.$/,".0")}1' file
1.5
0.006
9.0001
104.25
17.0
3.5
paper
PS no need to start two equal post:
remove trailing zero using awk
^ *
Start with 0
or more spaces (you have spaces in some lines)
[0-9]+
one or more number eks: 5
545
34654635
\.
a desimal point (.
needs to be escaped)
0+$
replace one or more 0
at end of line $
with nothing
\.$
if then line ends with .
add a 0
to get 17.0
and not 17.