Adva vagyon egy auth.log részlet. A feladat szemszögéből csak a sorok eleje érdekes. Mindegyik sor hasonlóan kezdődik
Apr 13 19:19:07
Egy olyan grep, egrep alapú regexpre lenne szükségem amely azokat a sorokat írja ki ahol az óra és a perc értéke azonos. Lásd a fenti példa.
Józan ésszel csináltam egy ilyet.
egrep "(0[0-9]:|1[0-9]:|2[0-9]:){2}.." auth.log
De ez mégsem azt teszi amit várnék tőle. Jól tudom, hogy a zárójelek közt a | jel VAGY kapcsolatot jelent?
Ha csak simán így írom be, akkor működik, csak értelemszerűen kevés a találat.
egrep "(0[0-9]:){2}.." auth.log
Ronda workaroundot (2 for ciklusban 1 egrep) tudok rá, de az nem megoldás!
Valakinek van javaslata, ötlete?
- 1051 megtekintés
Hozzászólások
Eléggé iskolai feladatnak tűnik, úgyhogy nem írom le egyben a teljes megoldást, de az alábbiak alapján nem bonyolult.
man grep:
"Back References and Subexpressions
The back-reference \n, where n is a single digit, matches the substring previously matched by the nth parenthesized subexpression of the regular expression."
A kétjegyű számot jól leírja a [0-9]{2} kifejezés. Ezt a fenti alapján zárójelbe kell tenni, és a második esetben hivatkozni a fent említett módon az első találatra, a harmadik szintén egy kétjegyű számot leíró regexp, közöttük kettősponttal.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Még annyi észrevétel, hogy ez jelenleg nem kizárólag a bejegyzés idejére illeszkedhet. A logsor tényleges adatrészében lényegében bármilyen szöveg megjelenhet, ami szerencsétlen esetben illeszkedhet a mostani "két szám, kettőspont, két szám, kettőspont, két akármi" mintára. (Az auth.log esetében tipikusan ilyen lehet egy kulcs fingerprintje.) Ezért érdemes lenne a sor kezdetéhez kötni a fenti mintát. A végéről pedig a ".." el is hagyható.
- A hozzászóláshoz be kell jelentkezni