我有一个看起来像这样的文件:
7846 1 8.89279e-05 0.094563 0.760024 1 0 0 0 0 0
6843 6 0.0170262 1.44256e-05 0.903887 2 -7 -8 0 0 -12.3666
4583 1 0.929271 0.586333 5.99739e-05 0 0 0 0 0 0
我希望将3美元,4美元和5美元的科学记数法转换为零。
7846 1 0.000000 0.094563 0.760024 1 0 0 0 0 0
6843 6 0.0170262 0.000000 0.903887 2 -7 -8 0 0 -12.3666
4583 1 0.929271 0.586333 0.000000 0 0 0 0 0 0
我是awk的新手,但我知道我可以匹配指定模式的字段,如下所示:
awk '$3 ~ /e-0/' test.dat
但我不知道如何更换这个领域。
谢谢,知道这是一个简单的问题,但我找不到答案。
答案 0 :(得分:0)
关注awk
可能对您有帮助。
awk '{for(i=1;i<=NF;i++){if($i ~ /[0-9]+e/){match($i,/[^.]*/);val=RLENGTH;match($i,/\.[^e]*/);$i=sprintf("%0"val"d.%0"RLENGTH"d",$i,$i)}}} 1' Input_file
OR
awk '
{
for(i=1;i<=NF;i++){
if($i ~ /[0-9]+e/){
match($i,/[^.]*/);
val=RLENGTH;
match($i,/\.[^e]*/);
$i=sprintf("%0"val"d.%0"RLENGTH"d",$i,$i)}}
}
1' Input_file