AWK从记录1中减去数字记录2

时间:2009-12-24 17:23:05

标签: awk fortran

我无法解决一个非常简单的问题。我的数据文件如下:

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,然后进行任何数学运算。

2 个答案:

答案 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

第一个是错误的。