【发布时间】:2018-12-23 13:16:25
【问题描述】:
如何在 print 中写出程序应该先计数然后应用 t 函数?我希望得到六位小数的结果,而不是四舍五入。谢谢。
/^$/ { flag=0; next; }
/D Format/ { flag=0; next; }
/F Format/ { flag=1; next; }
/^ 9 / { print t($5) "\n" t($6); }
/^10 / { print t($5) "\n" t($6); }
/^11 / { print t($5*180/3.141592653589) "\n" t($6*180/3.141592653589); }
/^15 / { print t($5*100) "\n" t($6*100); }
/^16 / { print t($5) "\n" t($6); }
/^20 / { print t($5*10) "\n" t($6*10); }
/^23 / { print t($5) "\n" t($6); }
/^24 / { print t($5) "\n" t($6); }
function t(n, s) {
s=index(n,".");
return (s ? substr(n,1,s+6) : n);
}
输入是
SUM OF ABSOLUTE VALUES OF CHECKS IS 0.844670D-13
Input-Output in F Format
No. Curve Input Param. Correction Output Param. Standard Deviation
9 0 43.8999000000 -0.2148692026 43.6850307974 0.1066086900
10 0 0.0883000000 -0.0081173828 0.0801826172 0.0006755954
11 0 2.5816650000 0.1530838229 2.7347488229 0.0114687081
15 0 0.2175000000 0.0018561462 0.2193561462 0.0017699976
16 0 80.4198910000 3.4449399961 83.8648309961 0.1158732928
20 0 1.9424000000 0.3078499311 2.2502499311 0.0047924544
23 0 3.5047300000 0.4315780848 3.9363080848 0.0052905759
24 0 5.5942300000 1.8976306735 7.4918606735 0.0092102115
26 0 54804.4046000000 -0.0029799077 54804.4016200923 0.0006133608
Input-Output in D Format
No. Curve Input Param. Correction Output Param. Standard Deviation
9 0 0.4389990000D+02 -0.2148692026D+00 0.4368503080D+02 0.1066086900D+00
10 0 0.8830000000D-01 -0.8117382819D-02 0.8018261718D-01 0.6755954153D-03
11 0 0.2581665000D+01 0.1530838229D+00 0.2734748823D+01 0.1146870812D-01
15 0 0.2175000000D+00 0.1856146162D-02 0.2193561462D+00 0.1769997586D-02
16 0 0.8041989100D+02 0.3444939996D+01 0.8386483100D+02 0.1158732928D+00
20 0 0.1942400000D+01 0.3078499311D+00 0.2250249931D+01 0.4792454358D-02
23 0 0.3504730000D+01 0.4315780848D+00 0.3936308085D+01 0.5290575930D-02
24 0 0.5594230000D+01 0.1897630674D+01 0.7491860674D+01 0.9210211480D-02
26 0 0.5480440460D+05 -0.2979907673D-02 0.5480440162D+05 0.6133608199D-03
我想得到类似的输出
43.685030
0.106608
0.080182
0.000675
156.68965
0.657068
21.935614
0.176999
83.864830
0.115873
22.502499
0.047924
3.936308
0.005290
7.491860
0.009210
它们是第一个表中第 5. 和 6. 列中的数字,但从 26 开始的行除外。
但我得到的不是这些数字(错误在于格式 - 2 个小数位而不是 6 个小数位,并且从两个表中打印数字而不是一个)
43.685030
0.106608
0.080182
0.000675
156.69
0.657109
21.9356
0.177
83.864830
0.115873
22.5025
0.047924
3.936308
0.005290
7.491860
0.009210
0.436850
0.106608
0.801826
0.675595
15.669
6.57109
21.9356
17.7
0.838648
0.115873
2.25025
4.79245
0.393630
0.529057
0.749186
0.921021
【问题讨论】:
-
我添加了所需的输出。谢谢
-
您似乎已将您的问题隐藏在大量代码和数据中。 edit 你的问题显示minimal reproducible example 的任何问题 是你寻求帮助而不是一个模糊的问题,听起来就像你以前的问题,然后只是转储所有内容你到目前为止。您正在执行的代码应该完全按照您的要求执行,所以我无法想象您要解决的问题是什么。
-
对不起,我再次编辑了问题,我希望现在已经清楚了
-
如果您不想打印第二个表格的内容,那么只需将
/D Format/{next}更改为/D Format/{exit}。我更新了答案以添加执行此操作的脚本。 -
谢谢,是否可以将 /F Format/ 到 /D Format/ 之类的代码添加到代码中 - 实际输入文件更大。
标签: awk