我的文件中包含以下值:
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
答案 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.