所以我有一个写入特定文件的shell脚本。在该文件中,存在一些格式类似于
Time taken: 123.45 ms
我想找到这个特定行的每个实例,并找到这个文件中所有时间的平均值。
编辑:所以我有时会动态地附加到一个文件中,比如说 sample.txt。我有时遇到的问题是 awk 有时会错过此格式的最后 1 或 2 个实例。我认为 awk 正在尝试访问文件并在文件完成写入之前读取它并且某处存在数据竞争。我将来如何避免这种情况?
有很多选择:
awk '/Time taken: / { S+=$3; N++} END { printf ("%0.3f\n", S/N)}' sample.txt
/Time taken: /
- 仅匹配的工艺线S+=$3
- 对字段 3 中的数字求和(如果您的行不仅是“所用时间:##.### 毫秒”,您将需要适当调整字段编号N++
- 号码匹配行类似于 Perl:
perl -ae '$S+=$F[2],$N++ if /Time taken: /; END { print sprintf("%0.3f\n",$S/$N)}' sample.txt
两个步骤:
grep 'Time taken' sample.txt | awk '{ S+=$3} END { printf ("%0.3f\n", S/NR)}'
利用awk的行号 NR
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句