删除除字符外的文件中的尾随零

时间:2014-06-09 08:37:31

标签: shell awk

我的文件中包含以下值:

1.5000
0.006
9.0001
104.2500
17.0000
3.5000
paper

我想删除尾随零,以下awk将删除尾随零但是为字符值打印零:

awk '{a=$0+0;if (a!~/\./) a=a".0";print a}' file

上述awk的输出:

1.5
0.006
9.0001
104.25
17
3.5
0.0

如何修改awk以跳过字符?

例外输出:

1.5
0.006
9.0001
104.25
17.0
3.5
paper

3 个答案:

答案 0 :(得分:1)

使用sed

sed 's/,\([0-9]*[.]0\?\)\(\(0*[1-9]\+\)*\)0*/,\1\2/' input

这给出了:

1.5
0.006
9.0001
104.25
17.0
3.5
paper

对于多列文件:

awk '$2~/^[0-9]+[.][0-9][1-9]*0+$/{
     $2=gensub(/([.]0?([0-9]*[1-9]+)?)0*$/, "\\1", "g", $2)}1' input

答案 1 :(得分:0)

 awk ' {print $2}' yourinputfile | awk ' { sub("\\.*0+$","");print} '

希望它有所帮助。

答案 2 :(得分:0)

以下是如何操作:

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无需开始两个相同的职位:
remove trailing zero using awk

^ *0或更多空格开始(某些行中有空格)
[0-9]+一个或多个号码:5 545 34654635
\.一个归位点(.需要转义)

0+$在行0的末尾替换一个或多个$ \.$如果然后行以.结尾,请添加0以获取17.0而不是17.