Portál AbcLinuxu, 10. května 2025 10:58

Dotaz: tisk textu od slova1 do slova2

14.12.2006 16:06 Terka | skóre: 13
tisk textu od slova1 do slova2
Přečteno: 159×
Odpovědět | Admin
mám-li text:

fasdfa asdfasdf asfasd f asdfa
asdfasdfadsdfa asdfasdf asdf asf
zacatek
asdfasfas dfasd fasd fasf asdf as
a sdfasdfas fasdf asdfas fas
 asdf asdfas fasdf asf
as dfasfasdf asdfas
konec
as dfasdfas f
 asdfas fasf


a chci vytisknout pouze část od zacatek po konec, tj.

zacatek
asdfasfas dfasd fasd fasf asdf as
a sdfasdfas fasdf asdfas fas
 asdf asdfas fasdf asf
as dfasfasdf asdfas
konec


jak na to nejlépe pomocí awk?





Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

14.12.2006 16:23 qk | skóre: 15 | blog: qk_develop
Rozbalit Rozbalit vše Re: tisk textu od slova1 do slova2
Odpovědět | | Sbalit | Link | Blokovat | Admin
no v awk nepisu, ja radsi sed. Ale zkusil bych nejakej takovej postup:
1) promennou na zacatku nula
2) zpracovavat radky dokud nenajdu pocatecni slovo (zacatek) a to uz od nej davat do vystupu (tzn odriznout veci pred tim slovem) a anstavit promenou na jedna
3)vypisovat radky dokud na radku neni koncove slovo a veci po nem odriznout z vystupu a na zbytek se vykaslat
4) jeste osetrit pripad ze bude zacatek i konec na stejnem radku

kdyby si chtela zdrojak pomoci sedu, tak ti ho muzu napsat.
14.12.2006 16:43 cronin | skóre: 49
Rozbalit Rozbalit vše Re: tisk textu od slova1 do slova2
Odpovědět | | Sbalit | Link | Blokovat | Admin
Awk tiez nepouzivam, ale staci aj shell:
#! /bin/sh

section_begin=`grep -n zacatek "${0}" | head -n 1 | cut -f 1 -d : | tr -d ' '`
section_end=`grep   -n konec   "${0}" | tail   -1 | cut -f 1 -d : | tr -d ' '`
 
tail +${settings_section_begin} subor.txt | head -n `expr ${section_end} - ${section_begin}` 
Upravoval som to z ineho skriptu, neskusal som to, ale vela chyb tam asi nebude. :-)
14.12.2006 17:03 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: tisk textu od slova1 do slova2
Bezva, takže než, aby se použil jeden awk, sed, nebo perl což jsou POSIX standardy a ten soubor se načetl jen jednou, tak se načte třikrát, spustí se 13 subprocesů, použije 6 různých utilit (externích programů), otevře 9 rour a to všechno pěkně křehkým způsobem. Moc pěkné. A co když tam těch sekcí bude víc? Tak tak to budeme mít od začátku první sekce po konec poslední. Nezaložíme nějaký kontest o co nejsložitější nebo obfuscated verzi této úlohy? Nebo kdo na to použije nejvíc systémových prostředků? ;-)
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
15.12.2006 08:57 cronin | skóre: 49
Rozbalit Rozbalit vše Re: tisk textu od slova1 do slova2
Bezva, takže než, aby se použil jeden awk, sed, nebo perl což jsou POSIX standardy a ten soubor se načetl jen jednou, tak se načte třikrát, spustí se 13 subprocesů, použije 6 různých utilit (externích programů), otevře 9 rour...
Ale ano, presne tak sa to urobi, ak je to potrebne. Sh skript nam bude fungovat aj na FreeBSD, kde nemame perl, aj na osekanych produkcnych Solarisoch, lebo aj tam to potrebujeme. Niekedy je treba si radsej ohackovat kompatibilitu tailu a grepu, pretoze nie vsetky skripty piseme pre svoj desktop, niektore piseme aj pre zakaznika, ktory ma paranoidnych administratorov, vedia oni?
15.12.2006 09:44 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: tisk textu od slova1 do slova2
Ty máš nějaký un*x hodný toho jména, který neubsahuje sed? Já tě snad nutím použít perl? Takže ty máš nějakého zákazníka, který má paranoidního admina, který zakázal sed a nezakázal grep, cut, head, tail, expr a tr? Toho mi ukaž. Takže ze mě nedělají blbce, vědí oni? Oni totiž neumí používat sed a maskují to za ultra hyper velkého machírka. Krom toho původní dotaz se týkal awk, takže se určitě ptá někdo, kdo nemá awk, vědí oni?
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
14.12.2006 16:54 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: tisk textu od slova1 do slova2
Odpovědět | | Sbalit | Link | Blokovat | Admin
sed -n '/^zacatek/,/^konec/p'
nebo
perl -ne '/^zacatek/../^konec/ and print'
a jak v awk?
awk '/^zacatek/,/^konec/ {print}'
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
14.12.2006 17:05 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: tisk textu od slova1 do slova2
P.S.: awk nepožívám, tohle jsem vyčetl za cca 1 min v jeho manuálu.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
14.12.2006 17:15 qk | skóre: 15 | blog: qk_develop
Rozbalit Rozbalit vše Re: tisk textu od slova1 do slova2
no z nadpisu a zadani odhaduju ze se jedna o nejakou skolni ulohu a taky odhaduju, ze zadani zni vypsat text od slova1 do slova2. A pochybuju ze takhle specializovany reseni projde.Protoze to pocita pouze s moznostmi ze jak zacatek tak konec budou na zacatku radky, ale zadany text to splnuje ;)
15.12.2006 09:09 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: tisk textu od slova1 do slova2
to už si snáď autor otázky dokáže prispôsobiť podľa svojich predstáv, dúfam
15.12.2006 09:34 Terka | skóre: 13
Rozbalit Rozbalit vše Re: tisk textu od slova1 do slova2
to bude ono! díky.
15.12.2006 09:36 Terka | skóre: 13
Rozbalit Rozbalit vše Re: tisk textu od slova1 do slova2
A když by se /^konec/ objevoval v textu víckrát, šlo by nějak vzít poslední nebo n-tý?
15.12.2006 09:39 Terka | skóre: 13
Rozbalit Rozbalit vše Re: tisk textu od slova1 do slova2
Myslím od 

/^zacatek/
.
.
.
.
/^konec/  =prvni
/^konec/  =druhý
.
.
.
/^konec/  =n-tý
/^konec/
/^konec/  =poslední

15.12.2006 11:01 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: tisk textu od slova1 do slova2
Od prvního /^zacatek/ po poslední /^konec/ v sedu například ne příliš hezké:
sed -n '/^zacatek/,${H;/^konec/{s/.*//;x;s/^\n//;p;d}}'
V awk a perlu by to samozřejmě mělo jít mnohem jednodušeji. Po n-tý výskyt v sedu už by byla nějaká nehezká prasárna, ale awk a perlu no problem, přece jen mají k dipozici proměnné.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
15.12.2006 11:06 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: tisk textu od slova1 do slova2
To poslední ;d je zbytečné.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
15.12.2006 11:55 Terka | skóre: 13
Rozbalit Rozbalit vše Re: tisk textu od slova1 do slova2
A šlo by to pomocí awk?
15.12.2006 13:20 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: tisk textu od slova1 do slova2
Ty jo ti jsi otrava, já snad pohledám ten svůj skript. Zkus se ale nejdřív kouknout sem na BEGIN a END
15.12.2006 13:37 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: tisk textu od slova1 do slova2
Omlouvám se. Přehlídnul jsem se. Prostě přes awk je to řešitelné, přes cykly a podmínky. Musel bych však nad tím popřemýšlet.

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.