2009-01-22 31 views
2

我只有这个是否有shell脚本或Perl脚本使用T_DB(Temp - Dry Bulb)和DP(露点)来计算相对湿度(%)?

=锝气温以摄氏度

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)以百分比=(E/ES)相对湿度(RH)* 100

在f (从CSV文件)我需要从列9中获取一个值,并从列10中获取一个值,然后使用这些值计算相对湿度(%),并将结果放在记录/行的末尾。这需要重复,直到csv文件结束。

任何帮助表示赞赏

欢呼

回答

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 

代替。