[ Príspevkov: 9 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.06.10
Prihlásený: 20.05.16
Príspevky: 36
Témy: 11 | 11
NapísalOffline : 15.11.2010 15:33 | Bash - regularne vyrazy

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.


Offline

Čestný člen
Čestný člen
Bash - regularne vyrazy

Registrovaný: 11.08.07
Príspevky: 4062
Témy: 30 | 30
Bydlisko: Brno
NapísalOffline : 15.11.2010 16:26 | Bash - regularne vyrazy

Co takto
Kód:
grep -iE '^[a-z0-9._]{5,}$' subor


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.06.10
Prihlásený: 20.05.16
Príspevky: 36
Témy: 11 | 11
Napísal autor témyOffline : 15.11.2010 16:45 | Bash - regularne vyrazy

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. :)


Offline

Čestný člen
Čestný člen
Bash - regularne vyrazy

Registrovaný: 11.08.07
Príspevky: 4062
Témy: 30 | 30
Bydlisko: Brno
NapísalOffline : 15.11.2010 17:44 | Bash - regularne vyrazy

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.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.06.10
Prihlásený: 20.05.16
Príspevky: 36
Témy: 11 | 11
Napísal autor témyOffline : 15.11.2010 18:52 | Bash - regularne vyrazy

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.


Offline

Čestný člen
Čestný člen
Bash - regularne vyrazy

Registrovaný: 11.08.07
Príspevky: 4062
Témy: 30 | 30
Bydlisko: Brno
NapísalOffline : 15.11.2010 19:03 | Bash - regularne vyrazy

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?


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.06.10
Prihlásený: 20.05.16
Príspevky: 36
Témy: 11 | 11
Napísal autor témyOffline : 15.11.2010 20:11 | Bash - regularne vyrazy

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


Offline

Čestný člen
Čestný člen
Bash - regularne vyrazy

Registrovaný: 11.08.07
Príspevky: 4062
Témy: 30 | 30
Bydlisko: Brno
NapísalOffline : 15.11.2010 21:08 | Bash - regularne vyrazy

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'.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.06.10
Prihlásený: 20.05.16
Príspevky: 36
Témy: 11 | 11
Napísal autor témyOffline : 16.11.2010 1:48 | Bash - regularne vyrazy

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.


 [ Príspevkov: 9 ] 


Bash - regularne vyrazy



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Regulárne výrazy

v Ostatné

0

576

11.02.2006 14:59

JanoF

V tomto fóre nie sú ďalšie neprečítané témy.

Regularne vyrazy

v PHP, ASP

25

1450

14.03.2011 17:30

camo

V tomto fóre nie sú ďalšie neprečítané témy.

Regulárne výrazy

v PHP, ASP

3

368

06.12.2009 14:41

Ďuri

V tomto fóre nie sú ďalšie neprečítané témy.

regularne vyrazy

v PHP, ASP

3

268

30.01.2009 16:57

mybirthday1403

V tomto fóre nie sú ďalšie neprečítané témy.

JAVA - regulárne výrazy

v Assembler, C, C++, Pascal, Java

0

631

26.03.2011 11:21

Shwollo

V tomto fóre nie sú ďalšie neprečítané témy.

Regularne vyrazy v PHP

v PHP, ASP

1

291

21.10.2007 22:50

Codik

V tomto fóre nie sú ďalšie neprečítané témy.

Regulárne výrazy - negácia reťazca

v PHP, ASP

7

690

22.10.2007 20:39

juho

V tomto fóre nie sú ďalšie neprečítané témy.

Regularne vyrazy v Perl

v Perl, Python, Ruby, CGI

0

2288

21.10.2007 22:41

quark

V tomto fóre nie sú ďalšie neprečítané témy.

Regulárne výrazy - všetko okrem výrazu

v PHP, ASP

3

216

10.04.2012 21:44

1daemon1

V tomto fóre nie sú ďalšie neprečítané témy.

Regulárne výrazy porovnávané s array

v PHP, ASP

2

107

29.12.2012 15:33

Ando

V tomto fóre nie sú ďalšie neprečítané témy.

Regulárne výrazy - problém - vybrať všetko čo nieje v

v PHP, ASP

2

291

18.10.2007 19:33

Bananslovak

V tomto fóre nie sú ďalšie neprečítané témy.

conky + fbcmd + bash

v Ostatné

2

317

10.02.2010 20:02

Deafboy

V tomto fóre nie sú ďalšie neprečítané témy.

Linux/unix Bash Prikaz pre zoradenie vzostupne etc.

v Operačné systémy Unix a Linux

1

162

03.12.2013 15:35

XOLOO

V tomto fóre nie sú ďalšie neprečítané témy.

Regulérne výrazy

v PHP, ASP

8

915

18.07.2009 16:30

Ďuri

V tomto fóre nie sú ďalšie neprečítané témy.

zase regularne vyrazi -pomoc

v PHP, ASP

1

344

01.10.2007 11:36

mokus

V tomto fóre nie sú ďalšie neprečítané témy.

Výrazy a priorita operátorov

v Assembler, C, C++, Pascal, Java

1

609

08.01.2009 17:17

neutronmind



© 2005 - 2018 PCforum, edited by JanoF