我有一个配置单元格查询,它以指数形式(3.52504582E+8)
生成一列。在SQL中,我从RDBMS表中获取数值。这两个输出我写入文件并比较UNIX中两个文件的差异以进行验证检查。
有没有办法在hive或UNIX级别将3.52504582E+8
转换为352504582
,以便验证成功?
Hive Table Sum:3.52504582E+8
RDBMS表总和:352504582
diff <file1> <file2>
验证失败。
答案 0 :(得分:0)
有没有办法在hive或者中将3.52504582E + 8转换为352504582 在UNIX级别,验证是否成功?
$ printf "%.f\n" 3.52504582E+8
352504582
$ awk '{print $1+0}' <<< "3.52504582E+8"
352504582
$ awk '{printf("%.f\n",$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
<强>解释强>
FS
- 输入字段分隔符,OFS
- 输出字段分隔符,我们将FS
和OFS
都设置为~
$2+=0
awk会自动转换
1
执行默认操作,即打印当前/记录/行,print $0
。要知道awk如何工作,请尝试awk '1' infile
,它将打印所有记录/行,而awk '0' infile
则不打印任何内容。除零以外的任何数字都是 true ,这会触发默认行为。