Вы можете использовать три важных понятия для решения такой проблемы:
- Перебирать файл
- Сохранять значения как переменные
- Делать математические переменные
Хороший способ читать файл построчно с помощью цикла while
:
while read line; do echo $line; done < notes
Обратите внимание, как мы используем перенаправление файлов <
для обработки файла какстандартный ввод.read
потребляет одну полную строку за раз.Давайте расширим это, чтобы хранить отдельные переменные.
while read name a b c; do echo $name $a $b $c; done < notes
Теперь давайте включим математику.Вы можете использовать внешнюю программу, такую как bc
, но это неэффективно, если нам не нужна математика с плавающей запятой (десятичные дроби).В Bash встроена математика!
while read name a b c; do echo $name $(( (a + b + c) / 3 )); done < notes
Как вы сказали, функциональная часть проста:)
awk один вкладыш:
awk '{print $1, ($2+$3+$4)/3}' notes