Преобразование нескольких значений Цельсия в градусы Фаренгейта в Bash

У меня есть текстовый файл, который имеет несколько значений температуры по Цельсию, которые необходимо преобразовать в градусы Фаренгейта.

Текстовый файл:

32 28 26 27 28 28 29 27 28 28 30 31 31 30

Я изначально думал о awk '{print ${1..14}' text_file отделить каждое значение перед выполнением преобразования, но это не очень эффективно...

1 ответ

Переберите все поля. Делай расчет. Присвойте результат обратно соответствующим переменным.

awk '{for(i=1;i<=NF;i++){$i=$i*1.8+32}}1' file

Формула для перевода в градусы Цельсия и Фаренгейта,

32 deg cel * 1.8 + 32

Пример:

$ echo '32 28 26 27 28 28 29 27 28 28 30 31 31 30' | awk '{for(i=1;i<=NF;i++){$i=$i*1.8+32}}1'
89.6 82.4 78.8 80.6 82.4 82.4 84.2 80.6 82.4 82.4 86 87.8 87.8 86

или же

awk -v RS=" " '{printf("%.1f ",$1*1.8+32)}'
Другие вопросы по тегам