Awk:在我乘法列时转换数字的表示法

Awk:在我乘法列时转换数字的表示法,awk,scientific-notation,Awk,Scientific Notation,大家好,我有以下几句话: A=3.5e30 B=4.345e40 (文件包含此符号中带有数字的列1.2345678D+10) 我得到的结果是: 3.168808781403E+02 29825999184755995994350665720659968 71343531834366140263241767594070376448 ... etc 如何使第二列和第三列具有与第一列相同的符号?即 而不是:713435318343636140263241767594070376448 我想要:7.

大家好,我有以下几句话:

A=3.5e30
B=4.345e40
(文件包含此符号中带有数字的列1.2345678D+10)

我得到的结果是:

3.168808781403E+02 29825999184755995994350665720659968 71343531834366140263241767594070376448 ... etc
如何使第二列和第三列具有与第一列相同的符号?即

而不是:
713435318343636140263241767594070376448

我想要:
7.134353183436E+37

让你知道答案是:

 sed 's/D/E/g' File | awk '{printf "%.12E %.12E %.12E %.12E %.12E\n", $1, $6*'$A', 10^($9)*'$B', $13,$8 }' > File2

如果需要所谓的科学符号,请使用printf和
%E
格式说明符

例如:

echo 71343531834366140263241767594070376448 | awk '{printf "%E",$1}' 
输出:

7.134353E+37

如果需要所谓的科学符号,请使用printf和
%E
格式说明符

例如:

echo 71343531834366140263241767594070376448 | awk '{printf "%E",$1}' 
输出:

7.134353E+37
只需使用
printf()
而不是
print()

只需使用
printf()
而不是
print()


您需要在代码中修复几个问题:

  • awk中shell变量的用法:

    awk -v awkVar1="$A" -v awkVar2="$B" ... '{use awkVar1 without $}' file
    
  • 要获取科学符号格式,需要使用
    printf
    定义格式,
    %E、%E、%g、%g
    中的一个对您有用


    • 代码中有几个问题需要解决:

      • awk中shell变量的用法:

        awk -v awkVar1="$A" -v awkVar2="$B" ... '{use awkVar1 without $}' file
        
      • 要获取科学符号格式,需要使用
        printf
        定义格式,
        %E、%E、%g、%g
        中的一个对您有用


      谢谢,不过我得换一行来做,对吧;这只是一个在命令行上显示结果的示例。代码中不需要BEGIN块。谢谢,但我必须在另一行中执行此操作,对吗?是的;这只是一个在命令行上显示结果的示例。代码中不需要BEGIN块。很好,但我如何在同一行中实现这一点?(我有不同的栏目)只使用printf而不是print:
      awk'{printf”%E%E%E…,$1,$6*'$A',10^($9)*'$B',$13,$8…
      很好,但我在同一行中如何做到这一点?(我有不同的栏目)只使用printf而不是print:
      awk'{printf”%E%E%E…,$1,$6*$A',10^($9)*“$B”、$13、$8…
      不错,但我如何在同一行中做到这一点?(我有不同的列)不错,但我如何在同一行中做到这一点?(我有不同的列)