2016-03-21 19 views
0

Nginx günlüklerini analiz etmede yardıma ihtiyacım var. günlüğünün Örnek:Satırları duruma göre seçin ve bir satırlı komutla sayın

10.10.10.10 - - [21/Mar/2016:00:00:00 +0000] "GET /example?page=&per_page=100&scopes= HTTP/1.1" 200 769 "-" "" "1.1.1.1" 
10.10.10.10 - - [21/Mar/2016:00:00:00 +0000] "GET /example?page=&per_page=500&scopes= HTTP/1.1" 200 769 "-" "" "1.1.1.1" 
11.11.11.11 - - [21/Mar/2016:00:00:00 +0000] "GET /example?page=&per_page=10&scopes= HTTP/1.1" 200 769 "-" "" "1.1.1.1" 
12.12.12.12 - - [21/Mar/2016:00:00:00 +0000] "GET /example?page=&per_page=500&scopes= HTTP/1.1" 200 769 "-" "" "1.1.1.1" 
13.13.13.13 - - [21/Mar/2016:00:00:00 +0000] "GET /example HTTP/1.1" 200 769 "-" "" "1.1.1.1" 

o sayımı ile seçmek mümkün mü per_page parametresi ve eşit veya 100'den büyük bu parametreyi içeren tüm uniq ip adresleri?

Yani, çıkış herhangi bir biçimde olabilir:

10.10.10.10 - 2 # ip 10.10.10.10 was found twice 
12.12.12.12 - 1 

o tek bir komut ile almak mümkün mü?

cevap

1
$ awk '/per_page=[0-9]{3}/{cnt[$1]++} END{for (ip in cnt) print ip, cnt[ip]}' file 
12.12.12.12 1 
10.10.10.10 2 

Bu kesinlikle temel awk - UNIX içinde başka bir metin dosyası işleme olmaya gidiyoruz Arnold Robbins tarafından kitap Etkili Awk Programlama, 4. Baskı, okuyun.

+0

boş sonuç :( –

+0

Ardından gerçek giriş dosyanız gösterilmiyor ya da sakatlığınız bozuk ya da en azından POSIX kullanıcısı değil. Eğer yardım istiyorsanız lütfen 'boş sonuç belirtin:' ' denemek için ya da herhangi bir görünen girişimi hata ayıklamak için, aslında kendiniz çözmek için uğraşmayın, bunu elde etmek için yol değil. –

+0

Bu benim için çok garip :) İlk örneğim ile örnek bir metin dosyası oluşturmak ve çalıştırmak Komut, herşey iyi, o zaman gerçek log dosyasından bir satır ekledim ve komutu tekrar çalıştırdım - her şey tekrar güzel çalışıyor! Ama bu komutu gerçek dosya ile çalıştırdığımda - hiçbir şey gösterilmiyor :( –

İlgili konular