![根据取值范围选择数据转换](https://linux22.com/image/14817/%E6%A0%B9%E6%8D%AE%E5%8F%96%E5%80%BC%E8%8C%83%E5%9B%B4%E9%80%89%E6%8B%A9%E6%95%B0%E6%8D%AE%E8%BD%AC%E6%8D%A2.png)
我有一个包含 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
}