Ссылка на это .
awk
должен быть в состоянии решить проблему. Проверьте ссылку для использования awk .
Приведенная ниже команда должна подойти для вашего случая, но ее нелегко использовать, если их много Variable
. Надеюсь, кто-нибудь, более знакомый с awk
, может подсказать, как улучшить.
awk '{if ($2 == "Variable_A"){ total += $3; count++ }} END { print "Variable_A = " total/count }' sample.mat > avg_a.txt
Приведенная выше команда будет выполнять для каждой строки, проверить, равен ли столбец 2 (соответствует $2
) «Variable_A», если да, суммировать значение в столбце 3 (соответствует $3
) и добавить счетчик. После обработки всех строк выведите среднее значение в текстовый файл.
Для дальнейшего вопроса
Чтобы вывести среднее значение для нескольких переменных в одном файле, вы можете использовать массив и цикл for в AWK. Добавьте элементы к vars
для дополнительных переменных.
awk 'BEGIN {vars[0]="Variable_A"; vars[1]="Variable_B"; vars[2] ="Variable_C" } { for (i in vars) { if ($2 == vars[i]){ total[i] += $3; count[i]++ }}} END { for(i in vars) {print vars[i]" = " total[i]/count[i]}}' sample.mat > avg.txt