AWK科学记数法输入(awk scientific notation input)

2019-10-20 09:04发布

我有一点麻烦,让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的格式使用?

Answer 1:

如果你不有权安装不同的awk,你可以定义和使用功能来分析工程符号

% awk 'function parse_en(eng_num) {
        split(eng_num,en,/[eEdD]/); return en[1]*10**en[2]; }
     $1 !~ /#/ {
        printf "%.4e\n",sqrt(parse_en($3)^2+parse_en($4)^2)}
'  bathtub_values.dat
2.1885e-07
9.4590e-08
7.3282e-08
6.2440e-08
5.5522e-08
5.0597e-08
4.6850e-08
4.3873e-08
4.1430e-08
3.9377e-08
% 


文章来源: awk scientific notation input