Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: marwinux 22. 02. 2013, 21:27:23
-
Ahoj,
prosím o rady, jak dostat v bash skriptu e-mailovou adresu z řetězce v proměnné
po celkem dlouhé době jsem se dopracoval že by to mohlo být takto:
TO="To: foo@bar.com"
EMAIL=$( sed '/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/d' <<< $TO )
ale stejně to neunguje
díky za rady
-
Stačí to takto?
EMAIL=`awk '{print $2}' <<< $TO`
-
Drobná poznámka: pokud to má sloužit k vyzobnutí z mailu, tak to je podstatně složitější (jméno adresáta v lomených uvozovkách, různá kódování,...) a žádným jednoduchým způsobem to nepůjde dostatečně funkčně.
-
Radsej namiesto sed-u grep -Eo - potom z toho bude nieco ako
grep -Eo '[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}'
Pozor - toto nefunguje vzdy. Napriklad ak ma domena s TLD ako tato http://مثال.آزمایشی (http://مثال.آزمایشی) priradeny nejaky email, tak to asi nepojde (dlhsia pripona, v nej pomlcky) - je ale pravda, ze to neakceptuje ani toto forum. Naviac mate este v pripone bodku. Aj keby ste nemali, tak je validny email aj napriklad root@[127.0.0.1] - a to, ci sa zatvorky paruju sa uplne lahko v regexpoch nerobi.
-
Radsej namiesto sed-u grep -Eo - potom z toho bude nieco ako
grep -Eo '[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}'
super, funguje a řeší to i ten případ, kdy bude emailová adresa v závorkách
díky chlapi!
-
Pozor - toto nefunguje vzdy.
Za zavinacem nemusi byt TLD. Muze to byt klidne neco jako prymek@superlab.superfirma.cz
-
Pokud by to melo byt dle RFC822 - http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html
-
Pokud by to melo byt dle RFC822 - http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html
Tyvole, tak to je masakr :) A to je pořád ještě bez té diakritiky a podobných vychytávek :)
-
Radsej namiesto sed-u grep -Eo - potom z toho bude nieco ako
grep -Eo '[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}'
super, funguje a řeší to i ten případ, kdy bude emailová adresa v závorkách
díky chlapi!
A co budete dělat s takovým emailem someone@people.coca-cola? Vlastní TLD se už *dají koupit*... Osobně emailovou adresu testuji jen na přítomnost zavináče ve slově (a nesmí být na prvním ani posledním místě, ale někde uvnitř).