Portál AbcLinuxu, 16. srpna 2025 02:14


Dotaz: egrep - pokročilé vyhledávání

25.11.2004 13:53 Vesly
egrep - pokročilé vyhledávání
Přečteno: 430×
Odpovědět | Admin
Zdravím vás. Máme tedy jeden textový soubor (pokus). Z něj chci vypsat všechny řádky, které obsahují slovo Praha, Brno, Pardubice...atd ale současně při vypsání řádku obsahujícího slovo Ostrava vypsat i 3 řádky nad tímto slovem i 3 pod ním. Lámám si nad tím hlavu už dlouho, ale nevím jak na syntaxi... Díky za rady..
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

25.11.2004 13:54 Vesly
Rozbalit Rozbalit vše Re: egrep - pokročilé vyhledávání
Odpovědět | | Sbalit | Link | Blokovat | Admin
jo ještě jsem zapomněl pro jistotu email... JammaPcb@seznam.cz
25.11.2004 14:22 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: egrep - pokročilé vyhledávání
Odpovědět | | Sbalit | Link | Blokovat | Admin
Toto je webové diskusní fórum. Chceš-li odpovědi na mail, zaregistruj se a dej si je posílat.

K věci. Nestačí něco jako:
grep '\<\(Brno\|Praha\|...\)\>' soubor
grep -C 3 '\<Ostrava\>' soubor
25.11.2004 14:31 Vesly
Rozbalit Rozbalit vše Re: egrep - pokročilé vyhledávání
Bojím se, že nestačí, protože já nechci provést nejdříve vyhledání těch jednoduchých města a pak -c3 "Ostrava".. Potřebuju, aby se to vypisovalo postupně jak to v souboru pokus je. tzn.

Praha Brno x x x Ostrava x x x Praha atd atd

Prostě, aby to vypisovalo výše uvedená města tak jak je najde, ale u města Ostarava, aby to vypsalo i +-3 řádky...
25.11.2004 14:37 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: egrep - pokročilé vyhledávání
{ grep -n Praha... <soubor; grep -C 3 Ostrava... <soubor; } | sed -e 's/^\([0-9]\+\)-/\1:/' | sort -u | cut -d: -f2-
25.11.2004 14:38 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: egrep - pokročilé vyhledávání
U sortu chybí -n. Možná ještě něco, nezkoušel jsem to. Ale idea je snad jasná.
25.11.2004 15:14 Vesly
Rozbalit Rozbalit vše Re: egrep - pokročilé vyhledávání
Jdu to hned vyzkoušet. Snad to půjde. Jak jsem psal Praha, Brno a x x x tak tam byly (ENTERy), které se tady zobrazily jako mezery. Jen jsem nepochopil konec toho scriptu... Kéž to pojede.
25.11.2004 15:15 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: egrep - pokročilé vyhledávání
Konce toho skriptu odřízne čísla řádků, podle kterých se to setřídilo.
25.11.2004 15:18 Vesly
Rozbalit Rozbalit vše Re: egrep - pokročilé vyhledávání
OK, tak script začíná { grep ..... OK ? A konci -f2- za tim uz nic neni ?
25.11.2004 15:29 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: egrep - pokročilé vyhledávání
Proč by mělo? Za domácí úkol najdi, kde ta složená závorka končí, a přečti manuálovou stránku cut(1)...

Kromě toho jsem si to opravdu spustil. U sedu je ješte zapotřebí dopsat do výrazu ;/^--$/d, jinak to na začátku vypíše --.
25.11.2004 15:32 Vesly
Rozbalit Rozbalit vše Re: egrep - pokročilé vyhledávání
Pošli mi to prosím meil... mimochodem není to domácí úkol, ani nejsem student.. :-) ale pokud ti to jde, tak to bude super. Mě to tady nechodilo. Ostatní vysvětlím přes email... Bude tě to zajímat.
25.11.2004 15:41 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: egrep - pokročilé vyhledávání
Aha, napsal jsem předtím jen o tom prvním chybějícím -n. Takže znovu
{ grep -n Praha... <soubor; grep -nC3 Ostrava... <soubor; } | sed 's/^\([0-9]\+\)-/\1:/;/^--$/d' | sort -nu | cut -d: -f2-
Domácí úkol si nazývej, jak je libo, ale podstata se nezmění: vlastní úsilí.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.