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

Dotaz: Prosím o pomoc s řešením scriptu

29.12.2012 22:33 Jakub
Prosím o pomoc s řešením scriptu
Přečteno: 451×
Odpovědět | Admin
Ahoj, mám něco takového, trápím se s tím už celý den, nejsem schopen vyřešit spolehlivý spůsob jak toho docílit. Neporadil by někdo? Celý je to v cyklu a nevím jak udělat rozumný "for" aby se vypisovaly řádky podle toho co je v proměnné VOLBA. Díky za pomoc
POLE=("aaaaaaaaaa"
      "bbbbbbbbbb"
      "cccccccccc"
      "dddddddddd"
      "eeeeeeeeee"
      "ffffffffff"
      "gggggggggg"
      "hhhhhhhhhh"
      "iiiiiiiiii")

Když je proměnná
VOLBA=0

     aaaaaaaaaa
     bbbbbbbbbb

Když je proměnná
VOLBA=1

     aaaaaaaaaa
     bbbbbbbbbb
     cccccccccc

Když je proměnná
VOLBA=2

     bbbbbbbbbb
     cccccccccc
     dddddddddd

Když je proměnná
VOLBA=3

     cccccccccc
     dddddddddd
     eeeeeeeeee

Když je proměnná
VOLBA=4

     dddddddddd
     eeeeeeeeee
     ffffffffff

Když je proměnná
VOLBA=5

     eeeeeeeeee
     ffffffffff
     gggggggggg

Řešení dotazu:


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

Odpovědi

29.12.2012 23:26 Peter S.
Rozbalit Rozbalit vše Re: Prosím o pomoc s řešením scriptu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Všeobecný zápis (trochu inšpirovaný pythonom) by mohol vyzerať takto:
for cisloriadku v range(0-pocetriadkov):
   ak $cisloriadku=>VOLBA-1 a $cisloriadku<=VOLBA+1:
      vypis $riadok
Samozrejme predpokladám že prvy riadok ma poradové číslo 0.
29.12.2012 23:36 l4m4
Rozbalit Rozbalit vše Re: Prosím o pomoc s řešením scriptu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Něco jako toto:
test "$VOLBA" -gt 0 && echo ${POLE[$(($VOLBA-1))]}
echo ${POLE[$VOLBA]}
test "$VOLBA" -lt $((${#POLE[@]}-1)) && echo ${POLE[$(($VOLBA+1))]}
Může-li $VOLBA obsahovat divoké hodnoty úplně mimo rozsah, je zapotřebí testovat jak horní tak spodní rozsah při každém výpisu, ale to už lze snadno úpravou uvedeného...
30.12.2012 00:10 Jakub
Rozbalit Rozbalit vše Re: Prosím o pomoc s řešením scriptu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Moc vám děkuji, tomu co napsal Petr S. celkem vůbec nerozumím, to co napsal l4m4 mi je bližší. Asi bych se na to měl ale vysrat, to co jsem napsal mělo cca 130 řádků a nefungovalo to jak by mělo, tady máte kod na 3 řádky a funguje to super, fakt tomu nerozumím.. Ještě jednou velké díky!
30.12.2012 00:44 Kit
Rozbalit Rozbalit vše Re: Prosím o pomoc s řešením scriptu
... a kdybys to neměl v poli, ale v souboru, bylo by to na jeden krátký řádek.
30.12.2012 01:50 Jakub
Rozbalit Rozbalit vše Re: Prosím o pomoc s řešením scriptu
A napíšeš mi ten řádek? V souboru jsem to měl původně, ovšem pro mé snadnější použití jsem to dal do pole.
30.12.2012 02:08 Kit
Rozbalit Rozbalit vše Re: Prosím o pomoc s řešením scriptu
head -n $((VOLBA+2)) soubor.txt | tail -n 3
30.12.2012 12:16 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Prosím o pomoc s řešením scriptu
Tohle dá správný výsledek jen pokud je $VOLBA aspoň o dva menší než počet řádků.
30.12.2012 13:03 Kit
Rozbalit Rozbalit vše Re: Prosím o pomoc s řešením scriptu
To souhlasí. Proto jsem napsal i další verzi s awk, která tímto neduhem netrpí a také jsem to u toho uvedl.
30.12.2012 02:35 Kit
Rozbalit Rozbalit vše Re: Prosím o pomoc s řešením scriptu
Ještě jeden trochu delší, ale trochu jinak se chová na konci. Dá se využít i pro podrobnější zpracování nalezeného výsledku.
awk "NR>=$VOLBA && NR<=$VOLBA+2 {print}"
2.1.2013 12:52 Jakub
Rozbalit Rozbalit vše Re: Prosím o pomoc s řešením scriptu
Díky, a kde je ten název souboru? jak ví kde to hledat?
2.1.2013 13:05 Kit
Rozbalit Rozbalit vše Re: Prosím o pomoc s řešením scriptu
Samozřejmě jako další parametr
awk "NR>=$VOLBA && NR<=$VOLBA+2 {print}" soubor.txt
nebo přes standardní vstup
awk "NR>=$VOLBA && NR<=$VOLBA+2 {print}" <soubor.txt
nebo přes rouru
producent | awk "NR>=$VOLBA && NR<=$VOLBA+2 {print}"
To jsou základní způsoby, které se u filtrů obvykle používají.
2.1.2013 13:20 Jakub
Rozbalit Rozbalit vše Re: Prosím o pomoc s řešením scriptu
Jo takhle, díky moc a co jsi myslel tím : Dá se využít i pro podrobnější zpracování nalezeného výsledku.
2.1.2013 13:26 Kit
Rozbalit Rozbalit vše Re: Prosím o pomoc s řešením scriptu
Místo "{print}" se do složených závorek dá napsat nějaký zajímavý program. Výhodou je, že dokáže rozparsovat vstup podle nějakého znaku.
2.1.2013 13:37 Jakub
Rozbalit Rozbalit vše Re: Prosím o pomoc s řešením scriptu
Zajímavé ale..... mohl by jsi mi napsat na email zde? email Díky
2.1.2013 13:53 Kit
Rozbalit Rozbalit vše Re: Prosím o pomoc s řešením scriptu
Odkaz nefunguje. Napiš mi na kit.saels zavináč gmail.com
2.1.2013 13:25 LiCh
Rozbalit Rozbalit vše Re: Prosím o pomoc s řešením scriptu
To máš z nějakého konkrétního příkladu, nebo jsi to napsal sám?
2.1.2013 13:27 Kit
Rozbalit Rozbalit vše Re: Prosím o pomoc s řešením scriptu
To mě zrovna napadlo, tak jsem to sem napsal.

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.