Portál AbcLinuxu, 25. dubna 2024 10:56


Dotaz: n-ty radek po zvolenem radku

26.3.2005 02:18 kennyhack
n-ty radek po zvolenem radku
Přečteno: 91×
Odpovědět | Admin
Potreboval bych ziskat (vypsat) n-ty radek po zvolenem radku. V HTML souboru se vyskytuje periodicky urcita zalezitost a ja chci vypsat vzdycky druhy radek po tomto opakujicim se radku.

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

Odpovědi

26.3.2005 06:31 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: n-ty radek po zvolenem radku
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jednoduché a neoptimalizované řešení v Perlu (chci 2. řádek následující po řádku obsahujícím a)
[ivok@zero ~]$ echo -e "a\nb\nX\na\nc\nX\nd"|\
> perl -ne '$x=0 if /^a$/; print if $x++==2'
X
X
26.3.2005 06:43 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: n-ty radek po zvolenem radku
... což samozřejmě nefuguje, pokud se ten regexp matchuje znovu dřív za těch X řádků, jak mně došlo v okamžiku, kdy jsem to postnul :-) Tak ne, musí tam asi fakt načítat to okno o X řádcích a tisknout poslední když první splňuje podmínku...
26.3.2005 06:59 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: n-ty radek po zvolenem radku
Psát skripty v sobotu v sedm ráno... Pak to takhle vypadá :-)
[ivok@zero ~]$ echo -e "a\nb\nX\na\na\nX\nX\nd"|\
>perl -ne 'push @x,$_;print  if  ($#x == 2) && ($x=shift @x) && ($x =~ /a/)' 
X
X
X
26.3.2005 09:43 kennyhack
Rozbalit Rozbalit vše Re: n-ty radek po zvolenem radku
OK, dekuji.

A slo by to v sedu, nebo v awk??
26.3.2005 09:54 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: n-ty radek po zvolenem radku
Určitě šlo, ale na mě se nedívejte :-)
26.3.2005 10:19 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: n-ty radek po zvolenem radku
Na sed je ještě moc ráno ;-) awk:
BEGIN { n = 2 }
{ if (a[FNR % n]) { print } a[FNR % n] = "" }
/a/ { a[FNR % n] = "OK" }
26.3.2005 13:55 Kennyhack
Rozbalit Rozbalit vše Re: n-ty radek po zvolenem radku
Dotaz jsem psal pozde vecer (brzy rano), tak jsem jej spatne zformuloval..

Chtel bych najit prave 2. radek po zvolenem radku, ktery obsahuje mnou zvoleny retezec - ten bude v promenne. (tohle budu delat v cyklu pricemz si budu menit promennou - retezec ..to uz zvladnu).

A pokud by slo, ze bych nasel prave 2. a prave 5. radek po zvolenem radku (ktery se vyhleda - obsahuje mnou zvoleny retezec) .. a tyto radky ulozil do dvou promennych (pak bych je zpracoval).

..diky za odpovedi
Marek Bernát avatar 26.3.2005 15:14 Marek Bernát | skóre: 17 | blog: Arcadia
Rozbalit Rozbalit vše Re: n-ty radek po zvolenem radku
Takto matchnes vsetky 2. riadky:
sed -n '/retazec/,+1p' subor | sed '/retazec/,+0d'
A takto 5.:
sed -n '/retazec/,+4p' subor | sed '/retazec/,+3d'
physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.

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.