Mam plik dziennika, każda linia w dzienniku jest poprzedzona datą, taką jak:
2012-03-06 11:34:48,657 blah blah blah...
Jak mogę uzyskać grep
ten plik i uzyskać tylko wiersze tylko od 8 rano do 11 wieczorem?
Mam na myśli, że chcę policzyć liczbę błędów występujących w godzinach od 8:00 do 23:00.
^[^ ]+
części ...Po co zawracać sobie głowę używaniem grep? Możesz po prostu użyć sed.
przykład:
Spowoduje to wydrukowanie wszystkich dzienników między
June 17 13:39:54
iJune 18 10:50:28
źródło
Jest o wiele łatwiejszy sposób na zrobienie tego.
Pobierz / dokumentacja: autodrgrep.kl.sh
Dowództwo:
Wyjaśnienie:
autodrgrep.kl.sh to nazwa narzędzia.
notchef to opcja przekazywana do narzędzia, która informuje go, co ma robić. W tym konkretnym przypadku informuje narzędzie, jaki jest typ pliku dziennika /tmp/client.log.
/tmp/client.log jest oczywiście plikiem dziennika.
2016-05-08_19: 12: 00,2016-05-08_21: 13: 00 to zakres dat z dziennika, który chcesz przeskanować
„INFO” to jeden z ciągów w wierszach dzienników, które Cię interesują.
„a2ensite” to kolejny ciąg w tej samej linii, w którym spodziewasz się znaleźć ciąg „INFO”. Określenie tych dwóch ciągów (INFO i a2ensite) izoluje i przetwarza potrzebne linie znacznie szybciej, szczególnie jeśli masz do czynienia z ogromnym plikiem dziennika.
5 określa Ostrzeżenie. Podając 5, program ma ostrzegać program jako OSTRZEŻENIE, jeśli istnieje co najmniej 5 wystąpień określonych ciągów wyszukiwania
10 określa Krytyczny. Podając 10, nakazujesz programowi, aby ostrzegał jako KRYTYCZNY, jeśli istnieje co najmniej 10 wystąpień określonych ciągów wyszukiwania.
-show określa, jaki typ odpowiedzi otrzymasz. Podając opcję -shown, mówisz, że jeśli zostanie znalezione coś pasujące do określonych wzorców, zostanie wyświetlone na ekranie.
Przykładowy przebieg:
Co się stanie, jeśli w dzienniku nie ma określonego zakresu dat lub przedziału czasowego?
Każde uruchomienie powyższej komendy będzie zawsze miało wiersz (ostatni wiersz wyniku), który mówi „ATWFILF” lub „ETWNFILF”.
ATWFILF oznacza, że rzeczywisty zakres dat lub przedział czasowy, którego szukasz, został znaleziony w dzienniku. To jest bardzo dobre.
ETWNFILF oznacza, że rzeczywisty zakres dat lub przedział czasowy, którego szukasz, NIE został znaleziony w dzienniku. W takim przypadku zostanie wykryty i użyty czas najbliższy podanemu czasowi.
źródło