Strona 1 z 1

BASH i praca z tekstem

: 11 listopada 2008, 18:47
autor: MCKorgan
Mam plik txt a w nim znajduje się coś takiego:
440000 Re: Kurs EUR/PLN kigam <pilot.zolwia@gmail.com> Thu, 04 Sep 2008 18:45:00 +0200 <48C0108C.7070505@gmail.com> <65d5356e-0bb4-4e2f-aef2-930527a8643b@r35g2000prm.googlegroups.com> <491a4$48c0065a$20711@news.teranews.com> 1553 13 Xref: news2.icm.edu.pl pl.biznes.wgpw:440000
440001 Re: FUTRA (FW20U8) 2626 "domestos" <gracz100.SKASUJ@gazeta.pl> Thu, 4 Sep 2008 17:10:03 +0000 (UTC) <g9p4pb$n20$1@inews.gazeta.pl> <g9o7n9$gd3$1@inews.gazeta.pl> 859 4 Xref: news2.icm.edu.pl pl.biznes.wgpw:440001
i mam zapisać do innego pliku.txt sam adres email czyli z tego fragmentu będzie to:

Kod: Zaznacz cały

pilot.zolwia@gmail.com i [email]gracz100.SKASUJ@gazeta.pl[/email]
powinno to się wykonać chyba przez wykorzystanie poleceń seda. Kombinowałem z tym i za bardzo mi to nie wychodzi.
Zapisuje mnie to co znajduje się w ostatnim "<>" czyli:

Kod: Zaznacz cały

491a4$48c0065a$20711@news.teranews.com  i g9o7n9$gd3$1@inews.gazeta.pl
Trzeba jakiś na pewno warunek żeby tylko z pierwszego "<>" pobierało ale za bardzo nie wiem jak. Bardzo wdzięczny byłbym za pomoc.

: 11 listopada 2008, 21:45
autor: kuzyn
A tak?

Kod: Zaznacz cały

head -1 nazwa_pliku | awk -F "<" '{ print $2 }' | awk -F ">" '{ print $1 }'

: 12 listopada 2008, 11:08
autor: MCKorgan
awk różni się od tego czego my musimy używać do wykonania tego ćwiczenia więc wolałbym jakbym miał to z wykorzystaniem poleceń seda.

: 25 listopada 2008, 22:00
autor: matteuszek
440000 Re: Kurs EUR/PLN kigam <pilot.zolwia@gmail.com> Thu, 04 Sep 2008 18:45:00 +0200 <48C0108C.7070505@gmail.com> <65d5356e-0bb4-4e2f-aef2-930527a8643b@r35g2000prm.googlegroups.com> <491a4$48c0065a$20711@news.teranews.com> 1553 13 Xref: news2.icm.edu.pl pl.biznes.wgpw:440000
440001 Re: FUTRA (FW20U8) 2626 "domestos" <gracz100.SKASUJ@gazeta.pl> Thu, 4 Sep 2008 17:10:03 +0000 (UTC) <g9p4pb$n20$1@inews.gazeta.pl> <g9o7n9$gd3$1@inews.gazeta.pl> 859 4 Xref: news2.icm.edu.pl pl.biznes.wgpw:440001
działa dla każdego poprawnego e-mail w tekscie

Kod: Zaznacz cały

 cat test | sed -n -e 's/ /\n/pg' | sed -n -e '/</p' | sed -e 's/<//' -e 's/>//' | sed -n '/^[a-Z0-9\_\.]\+@[a-Z0-9\-]\+\.[a-Z0-9\-\.]\+/p'
U mnie daje wynik:

Kod: Zaznacz cały

pilot.zolwia@gmail.com
[email]48C0108C.7070505@gmail.com[/email]
[email]gracz100.SKASUJ@gazeta.pl[/email]
a żeby łapał tylko pierwszy e-mail z linni to masz:

Kod: Zaznacz cały

cat test | sed -e 's/>.*//g' | sed -n -e 's/ /\n/pg' | sed -n -e '/</p' | sed -e 's/<//' -e 's/>//' | sed -n '/^[a-Z0-9\_\.]\+@[a-Z0-9\-]\+\.[a-Z0-9\-\.]\+/p'