Shellでの重量除去と統計繰返し数uniq-cが有効でない問題
2832 ワード
あれは夜中に寝たくなくて、突然自分のウェブサイトのUVとip数の統計を見て、typechoプラグインの統計は私自身もshellスクリプトの統計nginxログを再統計するかどうか分かりません
このスクリプト統計のクエリnginxログの中で最もアクセスの多い最初の100のip、BUTこのshell統計は問題があります
繰り返される...
合計11 Wのログ統計123.57.32.54 ip 3 Wこの2量は少し大きい上にスクリプト統計に問題があります
別のデリバリーコマンドsort-uを使用して試してみます
ip数は合計5125ですが、私は方法を考えてすべてのipのアクセス数を統計します.前回のシナリオはuniq-cが力を入れなかったので、uniqには数の制限があるのではないかと思います.
まとめてuniqとsort-u機能のような脱重
私は自分のshell問題を分析してuniq-cに出るべきです.
5 wでOKなのは123.57ではありません.32.54このipは私自身がab圧力測定を使ってやったのです.穴があいた
これがドンドン
寝る前に中国語のマニュアルのuniqの説明をよく見ました.
説明
Uniqコマンドは、ファイル内の重複行を削除します.Uniqコマンドは、InFileパラメータで指定された標準入力またはファイルを読み込みます.このコマンドは、まず隣接するローを比較し、2番目のローとローの後続のコピーを除去します.繰り返される行は必ず隣接します.(uniqコマンドを発行する前に、sortコマンドを使用してすべての重複行を隣接させます.)最後に、uniqコマンドは最終的に個別の行を標準出力またはOutFileパラメータで指定されたファイルに書き込みます.InFileとOutFileパラメータは異なるファイルを指定する必要があります.入力ファイルが「-」表示すると、標準入力から読み出されます.入力ファイルはテキストファイルでなければなりません.テキストファイルは、1行または複数行に整理された文字を含むファイルです.これらの行の長さは、2048バイト(すべての改行文字を含む)を超えることはできません.空の文字は含まれません.
Uniqコマンドを発行する前に、sortコマンドを使用してすべての重複行を隣接させます.
問題はここで私の統計スクリプトの中でipにアクセスするのはきっと隣接していないことです.uniqの重み付け原理は隣接する重み付け統計を下に探すのも同じです.すべての問題はsortが先にshellの内容を変更していないことです.
重复に成功する前にsortソートを使ってipを隣接させて私の望む统计に达させて、问题は难しくなくて命令の学习のしっかりしていません.
cat www.libenfu.com.access.log |cut -d ' ' -f 1 |uniq -c|sort -n -r|head -n 100
このスクリプト統計のクエリnginxログの中で最もアクセスの多い最初の100のip、BUTこのshell統計は問題があります
[root@bf logs]#sh ipBy.sh
5894 123.57.32.54
4115 123.57.32.54
3602 123.57.32.54
3221 123.57.32.54
3110 103.233.131.130
2200 123.57.32.54
2162 123.57.32.54
1623 123.57.32.54
1501 123.57.32.54
繰り返される...
合計11 Wのログ統計123.57.32.54 ip 3 Wこの2量は少し大きい上にスクリプト統計に問題があります
[root@bf logs]#cat www.libenfu.com.access.log |wc -l
112317
[root@bf logs]#cat www.libenfu.com.access.log |grep 123.57.32.54 |wc -l
34025
別のデリバリーコマンドsort-uを使用して試してみます
[root@bf logs]#cat www.libenfu.com.access.log |cut -d ' ' -f 1 |sort -u |wc -l
5125
ip数は合計5125ですが、私は方法を考えてすべてのipのアクセス数を統計します.前回のシナリオはuniq-cが力を入れなかったので、uniqには数の制限があるのではないかと思います.
まとめてuniqとsort-u機能のような脱重
私は自分のshell問題を分析してuniq-cに出るべきです.
[root@bf logs]#tail -n 60000 www.libenfu.com.access.log |cut -d ' ' -f 1 |uniq -c |sort -n -r -k 4 -t ' ' |head -n 20
2200 123.57.32.54
1501 123.57.32.54
1018 123.57.32.54
1000 123.57.32.54
601 123.57.32.54
451 123.57.32.54
219 5.9.88.103
169 62.210.251.247
166 178.202.133.114
151 209.58.178.145
151 163.172.68.136
5 wでOKなのは123.57ではありません.32.54このipは私自身がab圧力測定を使ってやったのです.穴があいた
123.57.32.54 - - [17/Feb/2017:12:35:15 +0800] "GET / HTTP/1.0" 503 206 "-" "ApacheBench/2.3" "-" "-"
これがドンドン
寝る前に中国語のマニュアルのuniqの説明をよく見ました.
説明
Uniqコマンドは、ファイル内の重複行を削除します.Uniqコマンドは、InFileパラメータで指定された標準入力またはファイルを読み込みます.このコマンドは、まず隣接するローを比較し、2番目のローとローの後続のコピーを除去します.繰り返される行は必ず隣接します.(uniqコマンドを発行する前に、sortコマンドを使用してすべての重複行を隣接させます.)最後に、uniqコマンドは最終的に個別の行を標準出力またはOutFileパラメータで指定されたファイルに書き込みます.InFileとOutFileパラメータは異なるファイルを指定する必要があります.入力ファイルが「-」表示すると、標準入力から読み出されます.入力ファイルはテキストファイルでなければなりません.テキストファイルは、1行または複数行に整理された文字を含むファイルです.これらの行の長さは、2048バイト(すべての改行文字を含む)を超えることはできません.空の文字は含まれません.
Uniqコマンドを発行する前に、sortコマンドを使用してすべての重複行を隣接させます.
問題はここで私の統計スクリプトの中でipにアクセスするのはきっと隣接していないことです.uniqの重み付け原理は隣接する重み付け統計を下に探すのも同じです.すべての問題はsortが先にshellの内容を変更していないことです.
[root@bf logs]#cat www.libenfu.com.access.log |cut -d ' ' -f 1 |sort -r |uniq -c |sort -n -r |head -n 10
34025 123.57.32.54
5989 106.38.241.151
5388 103.233.131.130
2200 123.56.150.61
1941 203.208.60.193
1865 203.208.60.196
1823 203.208.60.194
1796 203.208.60.195
1785 203.208.60.197
1278 216.244.66.232
重复に成功する前にsortソートを使ってipを隣接させて私の望む统计に达させて、问题は难しくなくて命令の学习のしっかりしていません.