Regulární výrazy v AWK

David

Re:regulární výrazy v awk
« Odpověď #15 kdy: 07. 01. 2012, 02:21:36 »
pres tohle proleze i ta 0% ale to by slo resit nejakym NORem ne?
Obavam se, ze '0%' pres to neprojde, protoze IMHO retezec musi mit dve nebo vice cislic nasledovanych znakem procento


David

Re:regulární výrazy v awk
« Odpověď #16 kdy: 07. 01. 2012, 02:42:14 »
podle meho selskeho rozumu by to nemelo fungovat ani na tech 10%
IMHO to prave na > 9% (cti 10 a vice) fungovat bude, protoze v tom logu asi nebude '05%', ale '5%', coz neprojde, protoze to ma jen 1 cislici. '10%' je nejnizsi cislo, ktere ma 2 cislice

smoofy

  • *****
  • 1 056
    • Zobrazit profil
    • E-mail
Re:regulární výrazy v awk
« Odpověď #17 kdy: 07. 01. 2012, 13:58:23 »
Snad tri a vice pri zapisu [0-9][0-9][1-9]*% ne? nebo snad pri pouziti hvezdickove konvence se nemusi objevit vyraz ani jednou? To se mi nezda i kdyz mozne to je.

Kit

Re:regulární výrazy v awk
« Odpověď #18 kdy: 07. 01. 2012, 14:24:53 »
Snad tri a vice pri zapisu [0-9][0-9][1-9]*% ne? nebo snad pri pouziti hvezdickove konvence se nemusi objevit vyraz ani jednou? To se mi nezda i kdyz mozne to je.
Hvězdička skutečně znamená, že se předchozí regulární výraz nemusí vyskytnout ani jednou. Pro 1..n se používá '+'.

isko

Re:regulární výrazy v awk
« Odpověď #19 kdy: 10. 01. 2012, 09:53:07 »
Díky za všechny příspěvky.

K jednotlivým vašim i dalším tipům, co jsem vyzkoušela:
^[0-9]*% => nedostanu nic
^[1-9]*% => nedostanu nic
[0-9]*% => dostanu řádky s 0-100%. Jenže to jsou vlastně všechny řádky z logu, který jsem chtěla filtrovat. Takže na nic.
[0-9][1-9]*% => dostanu 0-100%. DTTO
[0-9][1-9][0-9] => dostanu 10-100%.


[0-9][0-9][1-9]*% funguje.

Hvězdička znamená i nulový výskyt.

Problém s číslicemi typu 66%, 100% - jak už jsem se snažila upřesnit (možná špatně) byl způsobený tím, že do vstupu pro uvedené awk ty řádky s číslicemi 44, 66 a hlavně 100% vůbec nešly, zkrátka jsem špatně odfiltrovala vstupní data. Takže to padá, to už problém není.

Je možný, že jsem to krutě pomotala (je možný, že mám špatný linux?;-))), ale líp mi to fakt nešlo. A musím říct, že jsem se fakt snažila, dost jsem hledala na internetu, příkladů je všude milión, ale tohle konkrétní řešení jsem nenašla.

Takže tak, děkuju za reakce.

Jinak zápisy v logu vypadají takto:
2011-12-09 10:37:53
100 packets transmitted, 100 received, 0% packet loss, time 99119ms
rtt min/avg/max/mdev = 3.407/10.577/74.912/9.326 ms

a takto:
2011-12-12 11:38:56
100 packets transmitted, 0 received, +27 errors, 100% packet loss, time 99007ms
, pipe 2

(obojí najednou, podle toho, jak dopadne konkrétní ping)