Существует ли сценарий оболочки или сценарий Perl для расчета относительной влажности (%) с использованием T_DB (Temp - Dry Bulb) и DP (точка росы)? - PullRequest
2 голосов
/ 22 января 2009

Все, что у меня есть, это

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) мне нужно получить значение из столбца 9 и одно из столбца 10 используйте эти значения для расчета относительной влажности (%) и поместите результат в конец запись / строка. Это должно быть повторено до конца файла CSV.

Любая помощь приветствуется

ура

1 Ответ

2 голосов
/ 22 января 2009

Введите следующий код в 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

вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...