是否有使用T_DB(Temp - Dry Bulb)和DP(Dew Point)计算相对湿度(%)的shell脚本或Perl脚本?

时间:2009-01-22 07:15:01

标签: perl

我所有的就是这个

Tc =以摄氏度为单位的空气温度

Tdc =以摄氏度为单位的露点温度

(1)Es = 6.11 * 10.0 **(7.5 * Tc /(237.7 + Tc))

(2)E = 6.11 * 10.0 **(7.5 * Tdc /(237.7 + Tdc))

(3)相对湿度(RH)百分比=(E / Es)×100

事实上(从CSV文件)我需要从Column9中获取一个值,从Col 10中获取一个值 使用这些值来计算相对湿度(%)并将结果放在最后 记录/行。这需要重复,直到csv文件结束。

任何帮助表示赞赏

欢呼声

1 个答案:

答案 0 :(得分:2)

将以下代码放入calc_rh.pl

#!/usr/bin/perl

while (<>) {
    chomp;
    @f = map { /^\"(.*)\"$/ ? $1 : $_ } split /,/;   # Strips double quotes if present
    ($Tc, $Tdc) = @f[8, 9];       # Assuming Tc in column 9, Tdc in column 10
    $Es=6.11*10.0** (7.5*$Tc/ (237.7+$Tc));
    $E=6.11*10.0** (7.5*$Tdc/ (237.7+$Tdc));
    $RH = sprintf "%.2f", $E/$Es*100;    # Or use e.g. "%.4f" for 4 digits after d.p.
    print join(",", map { "\"$_\"" } @f, $RH), "\n";
}

使用以下命令运行:

perl calc_rh.pl < infile.csv > outfile.csv

注意:如果您的任何列包含逗号,则上述代码将中断。可以使用可下载的模块解决这个问题,但我觉得你只需要一个快速的脚本。

此外,如果您在Linux中运行,则可能需要运行:

perl ./calc_rh.pl < infile.csv > outfile.csv

代替。