![避免在 awk 中转换为科学计数法](https://linux22.com/image/61786/%E9%81%BF%E5%85%8D%E5%9C%A8%20awk%20%E4%B8%AD%E8%BD%AC%E6%8D%A2%E4%B8%BA%E7%A7%91%E5%AD%A6%E8%AE%A1%E6%95%B0%E6%B3%95.png)
我有一个包含数百列的 csv 文件。我想从静态数字中减去特定列的值,然后打印整行。该列的值是长浮点数。当我做减法时,awk 会自动将结果转换为科学格式。我可以使用 printf 来获取标准表示,但我需要获取整行,并且每行的字段太多。
有没有办法避免这种自动转换或至少绕过它?
答案1
从man awk
:
通过替换将数值表达式转换为字符串表达式和sprintf(CONVFMT, 表达式), 除非表达式可以在主机上表示为精确整数,然后将其转换为sprintf("%d", 表达式)。斯普林特夫() 是一个 AWK 内置函数,它复制了以下功能sprintf(3), 和卷积FMT 是一个内置变量,用于从数字到字符串的内部转换,并初始化为“%.6g”。可以强制显式类型转换,expr ""
是细绳并且expr+0
是数字。
这样你就可以安排卷积FMT开头或格式字段上的变量。