Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
Autor | Správa |
---|
Registrovaný: 23.06.10 Prihlásený: 20.05.16 Príspevky: 36 Témy: 11 | 11 |
Caute, potreboval by som poradit.
Predstavte si, ze mate subor, ktory obsahuje rozne zhluky znakov, emailove adresy, atd. Ako z tohto suboru vygrepujem tie riadky, ktore obsahuju minimalne 5 znakov, pricom vsetky znaky su z mnoziny: velke pismena, male pismena, cisla, bodka, podrzitko?
Dakujem.
|
|
Registrovaný: 11.08.07 Príspevky: 4087 Témy: 34 | 34 Bydlisko: Brno |
Co takto Kód: grep -iE '^[a-z0-9._]{5,}$' subor
|
|
Registrovaný: 23.06.10 Prihlásený: 20.05.16 Príspevky: 36 Témy: 11 | 11 |
bohuzial nie.
Zatial najblizsie tomu co potrebuje bolo
Kód: grep -i '[a-z0-9._]\{5,\}' subor
problem je v tom, ze vypise aj riadky kde je napr. ? alebo ! a to nechcem.
Ale dakujem. 
|
|
Registrovaný: 11.08.07 Príspevky: 4087 Témy: 34 | 34 Bydlisko: Brno |
Bohuzial nie co? Das mi nejaky priklad, na akom riadku moj regexp pracuje nespravne?
Tvoj regexp ti nefunguje IMHO preto, lebo nepracujes s hranicami, t.j. zaciatok: ^ a koniec: $. Preto ti vyberie napriklad aj riadok "abcde***", pretoze cast abcde odpoveda regexpu a zvysok ho nezaujima.
|
|
Registrovaný: 23.06.10 Prihlásený: 20.05.16 Príspevky: 36 Témy: 11 | 11 |
no vlastne som zistil, ze mas pravdu, tak sa ospravedlnujem.
ten tvoj zapis s prepinacom -E mi vratil, ze -E illegal option a bez neho mi to zas nevratilo vobec nic. a tie hranice je presne to co tomu chybalo. vobec som si to neuvedomil, ale tak ja sa to len teraz ucim...
A fakt ti dakujem, pomohol si mi.
Vlastne by som ta chcel poprosit, ci by si mi este nepomohol aj s druhou castou:
potrebujem vygrepovat riadky s mailovou adresou, ktora sa v prvej casti sklada z alfanumerickych znakov, bodiek, pomlciek, podtrzitok, v druhej casti tiez a za poslednou bodkou mozu byt len 2 az 4 znaky.
mam uz nejaky svoj zapis, ale myslim, ze nie je celkom spravny.
|
|
Registrovaný: 11.08.07 Príspevky: 4087 Témy: 34 | 34 Bydlisko: Brno |
Tak ho skus sem hodit, skontrolujeme, najdeme chyby. Vsak to je v podstate to iste, zaciatok mas v mojom prispevku vyssie, potom @, potom opat taky isty zapis pre cast za zavinacom a ukoncis to \.[a-z]{2,4} (mimochodom, na TLD .travel si nemyslel?).
-E ti vratilo illegal option? Eh? Co to je za distro a aka verzia grepu? `which egrep` ti vrati nieco?
|
|
Registrovaný: 23.06.10 Prihlásený: 20.05.16 Príspevky: 36 Témy: 11 | 11 |
no pripajam sa vzdialene, zrejme to bude solaris, kedze ako verziu vypisalo SunOS 5.10
mal by som to vediet vyhladat cez grep.
moj zapis
Kód: grep -i '[a-z0-9.-_]@[a-z0-9.-_].\{2,4\}' subor
|
|
Registrovaný: 11.08.07 Príspevky: 4087 Témy: 34 | 34 Bydlisko: Brno |
Opat ti chyba zapis zaciatku a konca riadku, ^ a $.
Dalej pomlcka ma specialny vyznam v hranatych zatvorkach, zapis [.-_] preto vyberie vsetky znaky od 0x2E po 0x5F (vid ASCII tabulku), to je zamer? V hranatych zatvorkach zapisuj pomlcku (pokial ma skutocne reprezentovat pomlcku) ako \-.
Dalej nemas vyznaceny pocet opakovani (zapisany pomocou + alebo ciselne pomocou {m,n}) pre cast pred zavinacom a za zavinacom. Hranata zatvorka vzdy symbolizuje iba jeden znak - preto tvoj regexp, ak by tam neboli ine chyby, odpovedal a@b.sk, x@y.sk, ale uz nie foo@bar.sk, pretoze nemas urceny ziaden pocet opakovani pre [a-z0-9.\-_].
Dalej bodku nemas escapovanu, samotna bodka v regexpe znamena lubovolny znak. Ak chces, aby regexpu vyhovoval skutocne znak bodky, pouzi \. (neplati pre zapis bodky v hranatych zatvorkach).
Dalej si neuviedol, co sa ma dva- az styrikrat opakovat (preto sa kvantifikator {2,4} uplatni na tu bodku). V TLD by som povolil asi len znaky a-z: [a-z]{2,4}.
http://www.regularnivyrazy.info/ - toto ti pomoze, skus si to prejst.
Inak na vela veci si vo svojom regexpe zabudol - v username moze byt toho omnoho viac, ako tych par znakov, ktore si povolil; domena nesmie zacinat/koncit pomlckou, nesmie obsahovat podtrznik, nesmie obsahovat viac bodiek za sebou ani bodku na zaciatku/konci; mailova adresa moze mat miesto domeny uvedenu IP adresu; xy dalsich veci, ktore nespominam.
Na mailove adresy existuju hotove regexpy, skus pogooglit. Inak nemyslim si, ze v Bashi je potrebne escapovat chlpate zatvorky, ak ich zapisujes do 'apostrofov'.
|
|
Registrovaný: 23.06.10 Prihlásený: 20.05.16 Príspevky: 36 Témy: 11 | 11 |
netreba sa velmi zamyslat nad tym tvarom mailovej adresy. to je proste zadanie ulohy, navyse subor obsahuje zhluk znakov, mozne a nemozne e-mailove adresy, atd.
myslim, ze v hranatych zatvorkach mozem mat pomlcku aj bez lomitka, aspon mi to tak funguje (alebo si to aspon myslim, ze mi to tak funguje),resp. pomlcka nebude metaznakom, aspon nie v tejto verzi grepu; aj kvantifikatory musim zapisovat vo formate znak\{m,n\}, bez lomitok to nefunguje, mam to tak aj v materialoch.
Tak nakoniec som sa po upravach dopracoval k takemuto zapisu, ktory podla vsetkeho funguje uplne spravne vzhladom na zadanie ulohy Kód: grep -i '^[a-z0-9._-]\{1,\}@[a-z0-9._-]\{1,\}\.[a-z]\{2,4\}$' subor
Dakujem, ze si si nasiel cas, naozaj mi to pomohlo. A ta stranka je tiez dobra.
|
|
Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
 | v Ostatné | 0 | 661 | 11.02.2006 14:59 JanoF |  | v PHP, ASP | 25 | 1574 | 14.03.2011 17:30 camo |  | v PHP, ASP | 3 | 457 | 06.12.2009 14:41 Ďuri |  | v PHP, ASP | 3 | 339 | 30.01.2009 16:57 mybirthday1403 |  | v Assembler, C, C++, Pascal, Java | 0 | 718 | 26.03.2011 11:21 Shwollo |  | v PHP, ASP | 1 | 384 | 21.10.2007 22:50 Codik |  | v PHP, ASP | 7 | 825 | 22.10.2007 20:39 juho |  | v Perl, Python, Ruby, CGI | 0 | 2401 | 21.10.2007 22:41 quark |  | v PHP, ASP | 3 | 296 | 10.04.2012 21:44 1daemon1 |  | v PHP, ASP | 2 | 184 | 29.12.2012 15:33 Ando |  | v PHP, ASP | 2 | 388 | 18.10.2007 19:33 Bananslovak |  | v Ostatné | 2 | 375 | 10.02.2010 20:02 Deafboy |  | v Operačné systémy Unix a Linux | 1 | 309 | 03.12.2013 15:35 XOLOO |  | v PHP, ASP | 8 | 1008 | 18.07.2009 16:30 Ďuri |  | v PHP, ASP | 1 | 411 | 01.10.2007 11:36 mokus |  | v Assembler, C, C++, Pascal, Java | 1 | 702 | 08.01.2009 17:17 neutronmind |
|