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
- 代码中有几个问题需要解决:
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…
不错,但我如何在同一行中做到这一点?(我有不同的列)不错,但我如何在同一行中做到这一点?(我有不同的列)