прочитать определенную строку в подпапках и рассчитать среднее - PullRequest
0 голосов
/ 06 июля 2018

Я новичок в сценариях Linux. У меня есть папки, скажем,

/movies
/movies/starting_with_a/metric.txt
/movies/starting_with_b/metric.txt

Пример содержимого metric.txt:

dummy_first_line
actual data = 8 

Я хочу прочитать metric.txt во всех подпапках и рассчитать среднее значение для этой папки.

Мой текущий код для извлечения значений:

for i in $(find . -name 'metric.txt');do cat "$i" | sed -n '2p'|awk '{print $NF}'

1 Ответ

0 голосов
/ 06 июля 2018

Вы почти правильно поняли. Вам просто нужно передать вывод вашей команды:

for i in $(find . -name 'metric.txt');do cat "$i" | sed -n '2p'|awk '{print $NF}'

в AWK для вычисления среднего значения:

awk '{ sum += $NF; cnt += 1 } END { printf "%.2f\n", sum/cnt }'

Здесь я делаю это с помощью двух команд AWK (не нужно делать cat и sed):

for i in $(find . -name 'metric.txt'); do
    awk 'NR == 2 { print $NF }' "$i"; 
done  |  awk '{ sum += $NF; cnt += 1 } END { printf "%.2f\n", sum/cnt }'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...