>我有一个蜂巢查询,它以指数形式生成(3.52504582E+8)
列的总和。在SQL中,我从RDBMS表中获取数值。我正在写入文件的两个输出,并比较UNIX中两个文件的差异以进行验证检查。
有没有办法在 hive 或 UNIX 级别将3.52504582E+8
转换为352504582
以便验证成功?
配置单元表总和:3.52504582E+8
RDBMS 表总和:352504582
diff <file1> <file2>
验证失败。
有没有352504582办法在 hive 或 在 UNIX 级别,以便验证成功?
$ printf "%.fn" 3.52504582E+8
352504582
$ awk '{print $1+0}' <<< "3.52504582E+8"
352504582
$ awk '{printf("%.fn",$1)}' <<< "3.52504582E+8"
352504582
我需要修改 Hive 输出文件中的结果。将 以上仅打印或进行永久更改?该文件将有 2 个 字段和~分开。262~3.52504582E+8
# if this is your input file
$ cat infile
262~3.52504582E+8
# result after
$ awk 'BEGIN{FS=OFS="~"}{$2+=0}1' infile
262~352504582
解释:
OFS
- 输出字段分隔符,我们将FS
和OFS
都设置为~
$2+=0
awk 在此处自动转换最后
1
执行默认操作,即打印当前/记录/行print $0
。要了解awk的工作原理,请尝试awk '1' infile
,它将打印所有记录/行,而awk '0' infile
什么都不打印。除零以外的任何数字均为 true,这将触发默认行为。
FS
- 输入字段分隔符,