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? A grep -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

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 

Hivatkozás: Van-e mód arra, hogy a könyvtárban lévő több fájlra is hivatkozni lehessen az egész elérési út újragépelése nélkül?

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

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:

  1. A figyelendő naplófájl vagy naplókönyvtár
  2. 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.
  3. Azok a karakterlánc (ok) / minták
  4. 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.
  5. 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>

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük