perl -F, -lane '
push(@h, [@F]),next if @ARGV;
print(qq[$_,Comments]),next if ++$FNR == 1;
$F[1] > $h[$FNR][1] and push @A, join q[,], $F[0], $F[1], q[], q[Min. Temp is higher];
$F[2] > $h[$FNR][2] and push @B, join q[,], $F[0], q[], $F[2], q[Max. Temp is higher];
eof and print for @A, @B;
' file1.csv file2.csv > file3.csv
Установите разделитель полей ввода в виде запятой, чтобы разделить и сохранить поля в @F
для каждой строки. Сохраните файл1 в LoL, также известном как список списков, @h = ([Line1:$F[0],$F[1],$F[2]], [Line2:$F[0] ,$F[1],$F[2]], ... )
.
$FNR
содержит счетчик строк файла 2.
Затем заполните массивы @A @B
на основе заданных критериев.
Обратите внимание, что доступ к LoL осуществляется как к матрице
$h[n][m]
=> n-й
список сначала берётся из LoL @h
, а затем из этого перехваченного списка выбирается m-й
элемент.