我正在尝试将数据从 Sybase 迁移到 SQL Server,但发现了一些不正确的记录。
我的记录是 2.466987812E-304,2.75859452825E-323,2.4669878237E-314
。第一个值是正确的,因为 float 的范围在 2.2250738585072014e-308 和 1.797693134862315708e+308 之间。但是第二个和第三个值不正确。
如何使用 sed 更正这些值?我想替换指数大于 308 的值必须替换为 2.2250738585072014e-308。
最佳答案
awk 'BEGIN{RS=ORS=FS=","}{split($0,a,"-");if(a[2]>308) $0="2.2250738585072014e-308"}1' inputfile
说明:这会将所有文本分成更小的 block ,并用 RS (,) 分隔。然后使用 awk 的 split 函数将字段进一步拆分为由 (-) 分隔的部分。如果第二部分 a[2] 的值大于 308,则执行一些操作。 “1”表示打印该行。
关于linux - 如何更正浮点值范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40736455/