read W
gawk '$9=="404" || $9=="403"' log.txt | gawk '{print $7}' | sort -k7 | uniq -c | sort -nr | awk '{ $(NF+1) = "-"; $(NF+1) = $1; $1 = NR "."; $(NF+1) = "-"; print}' | head -"$W"
我有这个脚本,它接受输入 w 并打印 w 行数。
输出 :
1. /example/.comments - 28 -
2. /example/example.atom.xml - 9 -
3. /example/When/200x/2003/04/10/-big/Concorde.jpg - 8 -
4. /example/When/200x/2006/03/30/-big/IMG_4613.jpg - 7 -
5. /example/When/200x/2003/07/25/-big/guild-2.jpg - 6 -
我可以以某种方式从 uniq 中获取值并用它来查找错误总数的百分比吗? (uniq数*100/错误总数)(总数87)
或者可以在 diphi 之后立即分裂吗?
1. /example/.comments - 28 - 32.2%
2. /example/example.atom.xml - 9 - 10.3%
3. /example/When/200x/2003/04/10/-big/Concorde.jpg - 8 - 9.2%
4. /example/When/200x/2006/03/30/-big/IMG_4613.jpg - 7 - 8.0%
5. /example/When/200x/2003/07/25/-big/guild-2.jpg - 6 - 6.9%
答案1
awk 的方法是
读取文件两次。在第一遍中,计算t
倒数第二个字段的总计$(NF-1)
。在第二遍中,计算百分比并将其附加到该行。
awk 'NR==FNR{t+=$(NF-1); next}{printf "%s %.1f%\n", $0, 100*$(NF-1)/t}' file file