本文介绍了如何使用uniq的-CD在bash脚本和仅提取数量,也不行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有需要的日志文件,并提取数据,并报告 .SH 文件。我想计算出有多少比例的总线条的确出错弹出(最高用量者)。

I have a .sh file that takes a log file and extracts data and makes reports. I would like to calculate what percentage of the total lines does an error pop-up (top talkers).

到目前为止,我有这样的:

So far I have this:

awk '// {print $4, substr($0, index($0,$9))}' | sort \
                        | uniq -cd | sort -nr | head -n20 > $filename-sr1.tmp

这个输出两列,计数后跟行了。

This outputs two columns, the count followed by the line.

我怎么能只计作计算。
例如。 计数/ total_lines = 0.000000 ...

How can I take just the count to make the calculations.Eg. count / total_lines = 0.000000...

推荐答案

下面是一个使用刚刚AWK,虽然输出顺序将是任意的,所以你可能需要将其管一种-n

Here's using just awk, though the output order will be arbitrary, so you may want to pipe it to a sort -n

$ cat file
foo
foo
bar
foo
quux
quux
$ awk '{a[$0]++} END{for (i in a) if (a[i]>1) printf "%5.2f%%\t%s\n", 100*a[i]/NR, i}' file
 33.3%  quux
 50.0%  foo

和适应当前的awk的:

And adapting your current awk:

awk '{a[$4" "substr($0, index($0,$9))]++} END{for (i in a) if (a[i]>1) printf "%5.2f%%\t%s\n", 100*a[i]/NR, i}'
# or possibly
awk '{s=$4; for(i=9;i<=NF;++i) s=s" "$i; a[s]++} END{for (i in a) if (a[i]>1) printf "%5.2f%%\t%s\n", 100*a[i]/NR, i}'

这篇关于如何使用uniq的-CD在bash脚本和仅提取数量,也不行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-30 05:39