【发布时间】:2014-07-01 19:28:17
【问题描述】:
我在让 awk 从文件中读取科学记数法时遇到了一些麻烦,这里是一些示例输入:
#Plane Turn Real Imaginary
HOR 1 0.0000e+00 -2.1885e-07
HOR 1 4.8481e-08 -8.1221e-08
HOR 1 4.0934e-08 -6.0784e-08
HOR 1 3.5707e-08 -5.1223e-08
HOR 1 3.1664e-08 -4.5608e-08
HOR 1 2.8268e-08 -4.1964e-08
HOR 1 2.5242e-08 -3.9469e-08
HOR 1 2.2429e-08 -3.7707e-08
HOR 1 1.9731e-08 -3.6430e-08
HOR 1 1.7082e-08 -3.5479e-08
我正在使用 awk 格式化此文件,以便使用以下命令使用 gnuplot 进行绘图:
gnuplot "awk '{if($2==1){printf "%.4e\n",sqrt($3^2+$4^2)}}' bathtub_values.dat" w l
但是算术不能正常工作,经过几次测试后我意识到 awk 似乎无法正确解释输入格式,我该如何指定 awk 使用的格式?
【问题讨论】:
-
我的 awk 似乎工作正常。你用的是哪一个?你得到什么结果?如果你只做
awk '{print $3*10}' file会发生什么 -
我得到的整数如下:0 0 40 40 30 30 20 20 20 10 10 10 10 90 60 30 50。我在 Mac OS X 小牛队
-
awk 版本为 20070501
-
awk的 OSX 版本也不适用于我。我建议你安装 GNU 版本。我也在 OSX 上,我使用homebrew- 它可以正常工作。我建议你安装homebrew,然后用它来安装gawk。 -
我在 Snow Leopard 中有那个版本的 awk,你的 awk 对我来说可以正常工作,并复制/粘贴所提供的输入:
2.1885e-07\n9.4590e-08\n7.3282e-08...。您可以尝试使用CONVFMT和OFMT(man awk) 以及检查您的输入文件是否有奇怪的字符 (cat -vte <filename>)