根据取值范围选择数据转换

根据取值范围选择数据转换

我有一个包含 3 列数据的文本文件。然而,在不同文件中的随机时间,观察到的单位会从 ppn 变为 ppb,导致需要转换因子并乘以 1000。

actual data                        needed data look
20101001,01:00,0.3                 20101001,01:00,0.3,300.000
20110103,10:00,212.67              20110103,10:00,212.670,212.670

我有一个 awk 命令来打印所有原始内容并添加第四列进行转换。

唯一的问题是它会将第三列中的所有内容打印 1000,然后打印到第四列。命令如下......

awk -F ',' '{printf "%s %s %.3f %.3f\n", $1,$2,$3,$3*1000}' temp7.tmp > County001-CO-0012.out

我如何才能只将第 3 列中 2 到 -1 之间的值乘以 1000,然后在第 4 列中打印第 3 列的原始值?

答案1

您可以在 awk 代码中执行此操作:

{
    # if $3 is between -1 and 2, multiply by 1000
    converted = $3 * (-1 <= $3 && $3 <= 2 ? 1000 : 1)
    printf "%s %s %.3f %.3f\n", $1, $2, $3, converted
}

相关内容