Преобразование нескольких значений Цельсия в градусы Фаренгейта в 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)}'