У меня есть серия файлов с 2(двумя) строками. Первая строка содержит целое число (1-100), а вторая строка содержит десятичное число (1.0000-99.9999). Мне нужно получить сумму первой строки и среднее значение второй строки, т.е.

awk '{sum += $1} {avg / $2} NEXT {print sum} END {print avg}' *log

Пример:

 1log
     20
     4.2
 2log
     34
     1.2

Где вывод будет выглядеть так:

 54
 2.7

1 ответ1

0

С помощью awk используйте переменную FNR , в которой содержится номер записи текущего файла.

awk '
  FNR==1 {sum1 += $1}
  FNR==2 {sum2 += $1; count2++}
  END {print sum1; print (sum2/count2)}
' 1log 2log

или же

paste 1log 2log | {
  read n1 n2; echo $((n1+n2))
  read n1 n2; bc <<< "($n1+$n2)/2"
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .