linux - 如何更正浮点值范围?

标签 linux bash parsing sed

我正在尝试将数据从 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/

相关文章:

c++ - 编译 C++ 代码使其在 Windows 和 Linux 中表现相同

Linux SED - 保留空间 - 所有行的一个值

linux - 在命令链中输入 sudo 命令的密码

java - 从一行中提取小时分钟秒的正则表达式

python - 如何从嵌套数组中获取值? JSON

linux - OpenGL/X-Window 程序在窗口创建期间挂起

c - 为什么经过检测的 C 程序运行得更快?

Bash - 为数组项创建 tar

php - 将逗号作为小数点的数字转换为 float

linux - Qt 小部件大小错误 + 小部件更新问题