Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
159 views
in Technique[技术] by (71.8m points)

shell - Remove trailing zeros in a file except character

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
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Using sed:

sed 's/,([0-9]*[.]0?)((0*[1-9]+)*)0*/,12/' 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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...