我无法解决一个非常简单的问题。我的数据文件如下:
Crap Crap 0.123456789D+09 Crap Crap
Crap Crap 0.123456798D+09 Crap Crap
我需要使用AWK来减去第三列中的数字;第二行减去第一行。
我试过了:
cat crap.txt | awk '{ A[NR-1] = $3 } END { print A[1] - A[0] }'
没有成功。也许数字的格式错了? (AWK可以使用D
而不是E
读取科学记数法吗?)
帮助!
修改
正如社区所知,AWK不理解使用D
代替E
的科学记数法(就像许多Fortran产出一样)。有必要替换D
E
,然后进行任何数学运算。
答案 0 :(得分:3)
你可以动态改变乐谱......
cat crap.txt | awk '{ sub(/D/,"E",$3); A[NR-1] = $3; } END { print A[1] - A[0] }'
答案 1 :(得分:1)
awk
无法读取D符号(顺便说一句是什么意思?)。这是一个例子:
printf "1.2D+1\n1.2E+1\n12\n" | awk '{ print $1/3; }'
0.4
4
4
第一个是错误的。