Van egy naplófájl-készletem, amelyet felül kell vizsgálnom, és egyszerre szeretnék keresni bizonyos karakterláncokat ugyanazokon a fájlokon. Jelenleg a következőt használom:
grep -E "fatal|error|critical|failure|warning|" /path_to_file
Hogyan tudom ezt használni, és egyszerre több fájl karakterláncait keresni? Ha ezt szkriptelni kell, tud valaki egy egyszerű szkriptet adni ehhez?
Válasz
grep -E "fatal|error|critical|failure|warning|" *.log
Megjegyzések
- Hogyan érhetem el, hogy
grep
átugorja a könyvtárakat, de mégis rekurzívan ellenőrizze az összeset fájlokat? Agrep -E 'text' **/*
működik, de minden egyes alkönyvtárhoz hibaüzenetet ad (és utána helyesen ellenőrzi az összes fájlt). - @Jorn, valóban új kérdést kell feltenned, de használja a következőt:
find . -type f -exec grep -E 'fatal|error|critical|failure|warning' {} +
-
grep: invalid max count
kapok, ezért jherrans választ
Válasz
Valami ilyesmit használhat:
find . -name "*.log" | xargs grep -E "fatal|error|critical|failure|warning|"
Ez keressen meg minden fájlt, amelynek kiterjesztéseként .log
van, és alkalmazza a grep
parancsot.
Megjegyzések
- Miért kell bajlódnia a
xargs
és a súlyos törés lehetőségével a fájlnevek üres helyén , amikor csak afind . -name '*.log' -exec grep -E 'fatal|error|critical|failure|warning' {} +
?
Válasz
lehetőséget használja egyszerűbb, egyszerűen megadhatja az egyes fájlokat egymás után.
grep -E "fatal|error|critical|failure|warning" file1.log file2.log
Válasz
Ha szüksége van rá egy tetszőleges fájlnévhalmazt megfogni, amelyet egy reguláris kifejezés nem tud lekérni:
grep -E "fatal|error|critical|failure|warning|" `cat<<FIN > file1 > file2 > ... > filen > FIN`
Mi az előnye a fájlnevek egymás utáni beillesztésének? Összeállíthatja a fájlnévlistát egy szöveges fájlba, majd beillesztheti.
Válasz
Göndör zárójeleket is használhat, ha a fájlok ugyanazok a mappák.
Lásd a példát
grep -E "fatal|error|critical|failure|warning|" /var/log/{messages,secure,syslog,dmesg}
Ha hozzáad egy s-t a grep-hez, ez elnyomja a hiányzó hibákat fájlok
grep -sE "fatal|error|critical|failure|warning|" /var/log/{messages,secure,syslog,dmesg}
Éppen ezzel kísérleteztem, mert olyan parancsokat hajtottam végre, amelyek több disztrófa között működnek, ahol az egyik fájlban van, szemben a másikkal az operációs rendszer különbségei miatt.
Levelezési naplók
sudo grep -is [email protected] /var/log/{maillog,exim_mainlog,exim_rejectlog,mail.log,mail.err,syslog}
Archivált levelezési naplók a 2> / dev / null használatával a zgrep hiányzó .gz figyelmeztetések elnyomásához
sudo zgrep -is [email protected] /var/log/{maillog*,exim_mainlog*,exim_rejectlog*,mail.log*,mail.err*,syslog*} 2>/dev/null
Válasz
Ha rekurzívan akarsz keresni az alkönyvtárak fájljaiban is, akkor használhatod az alábbi parancsot is:
Rekurzív módon fog keresni az alkönyvtárak fájljában s
egrep -r "string1|string2" pathname
megjegyzések
- is egrep
Válasz
Ez nagyon időigényes feladat volt. És igen, minden bizonnyal szkriptet kellett készíteni, ha egyszerre több karakterláncot fog keresni több különböző naplóban. De nemrég ezt kellett csinálnom, és nagyon fájdalmas volt. Ennek ellenére kész és kész, és képes töltse le a következő linkről:
Napló keresési szkript letöltése
Ez a működése meglehetősen egyszerű.
1. forgatókönyv: EGY karaktersorozat figyelése csak egy naplófájlban
./logsearch.sh localhost /var/tmp/logXray autonda /var/log/messages 60m "can.*t.*open" "." 1 2 single_errCheck -ndshow
2. forgatókönyv: TÖBB karakterlánc figyelése csak egy naplófájlban
./logsearch.sh localhost /var/tmp/logXray autonda /var/log/messages 60m "can.*t.*open_P_ntpd.*stat" "." 1 2 multi_errCheck -ndshow
3. forgatókönyv: Egyetlen vagy több karakterlánc figyelése több naplófájlban
./logsearch.sh localhost /var/tmp/logXray autonda /var/log 60m "can.*t.*open_P_ntpd.*stat" "." 1 2 multi_err_multi_logCheck -ndshow
Megjegyzések:
A _P_ jelentése VAGY – Helyettesíti a “|” csövet ymbol, mert kevésbé valószínű, hogy “_P_” karakterláncot kell keresnie. Ha nem akarja beírni a “_P_” szót, akkor a _P_ szót csak “|” -nel cserélheti le.
A szkript használatakor a következő paraméterek gyakran változnak:
- A figyelendő naplófájl vagy naplókönyvtár
- Az életkor naplófájlnak kell lennie ahhoz, hogy figyelemmel kísérhesse..nem figyeljük meg és ne fedezzük fel azokat a naplófájlokat, amelyek időbélyegzője 60 percnél hosszabb.
- Azok a karakterlánc (ok) / minták
- A címke – ez a második az utolsó argumentum, amelyet meg kell adnia. Statisztikákat rögzít azokról a naplófájlokról, amelyeket figyel a (z) / var / tmp / logXray alatt.
- A napló opció -ndshow – Ez az a paraméter, amelyet használni szeretne, ha a megadott naplófájlokból szeretné beírni a bejegyzéseket.Ha csak az összes megtalált minta teljes számát szeretné látni, akkor egyszerűen cserélje le a “-ndshow” szót a “-ndfoundmul” kifejezésre.
A “-ndfoundmul” használatakor kimenetet kap hasonló a következőkhöz:
[root@dgphxtest001]# ./logsearch.sh localhost /var/tmp/logXray autonda /var/log/messages 60m "can.*t.*open_P_ntpd.*stat" "." 1 2 blahblahA -ndfoundmul OK: [/var/log/messages][1] /var/log/messages:P=(can_t_open=0 ntpd_stat=0)_F=(117s)_R=(228,228=0)
Megoldás az eredeti poszterhez “s Issue: Több karakterlánc keresése több naplófájlban
./logsearch.sh localhost /var/tmp/logXray autonda /var/log 60m "fatal_P_error_P_critical_P_failure_P_warning" "." 1 2 multierr_logCheck -ndshow
OS: Ezt Ubuntu és Red Hat rendszeren tesztelték.
Válasz
grep -EFn "fatal|error|critical|failure|warning|search-string" /path/to/the/file/log_file?.lo* --color=auto
Ez a “végzetes vagy hibás, vagy kritikus, vagy hiba, vagy figyelmeztetés, vagy keresési karakterlánc” kifejezésre fog keresni a “log_file?” kezdetű nevű fájlokban. és a “lo ” * kiterjesztést a / elérési út / a / fájl / útvonalba, és adja meg a keresési karakterlánc véletlenszerű színét és nyomtatási sorszámát, amelyen megtalálta. / p>
Megjegyzések
- Biztos, hogy ez működőképes válasz, de a felhasználó egy mintát, egy fix keresési karakterlánccal válaszolt. Sajnáljuk, de olyan dolgok hozzáadása, amelyeket nem kértek, például az eredmények sorszámozása és színezése nem valószínű, hogy kedvezőbbé teszi a választ. De lesznek más kérdések is, amelyekre valószínűleg megválaszolhatók a
grep
készségek, így a legnagyobb szerencsével a USE karrierjéhez! - @zagrimsan szempont, én ‘ hozzáadta a -E ‘ fatal | hiba | kritikus | hiba | figyelmeztetést | ‘ param.
- És hé, kifejezetten több fájlt kért, nem pedig keresési mintát. Kérjük, olvassa el újra a kérdést.
- Idézet a Q: ” keresésből adott karakterláncokba “, és a kérdés megjelenik az általa használt keresési minta (amely több karakterláncot tartalmaz). Abban igazad van, hogy a kérdés címe kissé eltér attól, amit valójában kér. A BTW,
-E
és a-F
‘ nem használható egyszerre, ezek ütköző (elírás?).
Válasz
JigarGandhi “válasza bemutatja a csillag helyettesítő karakter használatát. Több van belőlük, és itt láthatja őket vagy a .
Az egyik, amit hasznosnak találtam, a []
és a []
tartomány megfelelője. Mivel az a rendszer, amelyen dolgozom, sorszámozott naplót állít elő fájlok, pl. product.log.1
product.log.2
...
product.log.200
, akkor praktikus, ha egyetlen paranccsal grepelünk 3 vagy 4 egymás után következő fájlon, de nem többet. Tehát ez
grep "whatever" product.log.[5-7]
az összes product.log végződésű fájlt meg fogja fogni. 5., 6. vagy 7. A helyettesítő karakter nem szükséges, hogy a végén legyen, így flickerfly válasza egyszerűsíthető
grep -E "fatal|error|critical|failure|warning" file[1,2].log
Vegye figyelembe azt is, hogy ezek a helyettesítő karakterek más parancsokban is használhatók, például a cp
parancsokban. p>