我尝试将数据从Sybase迁移到SQL Server,但发现了一些不正确的记录。
我的记录是2.466987812E-304,2.75859452825E-323,2.4669878237E-314
。在第一个值是正确的,因为浮动的范围在2.2250738585072014e-308和1.797693134862315708e + 308之间。但是2&3和#3值不正确。
如何使用sed更正这些值?我想要替换指数大于308的值必须替换为2.2250738585072014e-308。
答案 0 :(得分:0)
awk 'BEGIN{RS=ORS=FS=","}{split($0,a,"-");if(a[2]>308) $0="2.2250738585072014e-308"}1' inputfile
说明:这会将所有文本划分为由RS(,)分隔的较小块。然后使用awk的split函数将字段进一步拆分为由( - )分隔的部分。如果第二部分a [2]的值大于308,则执行一些操作。 “1”表示打印线。