读取子文件夹中的特定行并计算平均值

时间:2018-07-06 04:01:11

标签: linux bash shell awk sed

我是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 :(得分:0)

您几乎完全正确。您只需要提供命令的输出即可:

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命令(无需执行catsed)来完成此操作:

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 }'