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