gpt4 book ai didi

linux - 更改数据文件的 double

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:27:51 30 4
gpt4 key购买 nike

我有一百个包含三个字段的文件。每一个看起来像这样(多行):

#time data1 data2
20 1.9864547484940e+01 -3.96363547484940e+01
40 2.164547484949e+01 -3.2363547477060e+01
60 1.9800047484940e+02 -4.06363547484940e+02

它们很重,其中一些占用高达 1.5G。我想通过以较低的 double 保存最后两列并删除 e+0? 项来减小它们的大小。例如,我想将上面的四行转换为:

#time data1 data2
20 19.865 -39.636
40 21.645 -32.364
60 198.00 -406.36

我用谷歌搜索并找到了 awkCONVFMT 选项。但我不知道如何使用它,因为我真的不是 awk 的专家。这是适合我的情况的工具吗?如果是这样,我应该如何使用它?

我也想过写一个C++脚本,但是直接命令行就好了。

最佳答案

我会使用 awk 的 printf 函数:

awk 'NR==1;NR>1{printf "%d %.3f %.3f\n", $1, $2, $3}' file

以上命令输出:

#time data1 data2
20 19.865 -39.636
40 21.645 -32.364
60 198.000 -406.364

简短说明:

如果我们在第一行( NR == 记录数),

NR==1 的计算结果为 true。如果条件后没有执行操作(在 {} 之间),awk 只打印该行,在本例中为标题。

NR>1 在除第一行输入之外的所有其他行上计算为 true。它后面是一个操作,该操作使用 printf 来实现所需的结果。

关于linux - 更改数据文件的 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32328164/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com