2009-01-22 36 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 

代替。