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

Dotaz: Incrementacia stringu v bash-i

Tombik avatar 11.3.2009 10:51 Tombik | skóre: 12
Incrementacia stringu v bash-i
Přečteno: 217×
Odpovědět | Admin

Dobry den,

potrebujem spravit nasledujucu vec. Mam v suboru zapisany text napriklad "aaaa". Skript text "aaaa" precita a zmeni ho na "aaab", ktory nasledne zapise do povodneho suboru. Pri dalsom spusteni ho zmeni znovu zmeni z "aaab" na "aaac" ... az pride po "aaaz" a to zmeni na "aaba" potom na "aabb" ...

Cast so zapisom a citanim zo suboru nie je problem, potrebujem vyriesit len to ako sa to da inkrementovat tak ako som to napisal.

Som uz zufaly cenim si kazdu pomoc, vopred dakujem.

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

Odpovědi

11.3.2009 10:54 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
Rozbalit Rozbalit vše Re: Incrementacia stringu v bash-i
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jakou že to studuješ školu, že vám dávají takové hloupé domácí úkoly? :D
11.3.2009 11:11 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: Incrementacia stringu v bash-i
Jakou že to studuješ školu

Odhaduju informatiku kdekoliv, ale obvykle se řeší převody jenom do binární a hexadecimální soustavy :-).

I am always ready to learn although I do not always like to be taught. (W. Churchill)
11.3.2009 11:37 l4m4
Rozbalit Rozbalit vše Re: Incrementacia stringu v bash-i
Odpovědět | | Sbalit | Link | Blokovat | Admin

Tady je řešení, ale neřeknu ti, jak funguje.

incr() {
  alphabet=(a b c d e f g h i j k l m n o p q r s t u v w x y z)
  b="$1"; a="$b+"
  while test "$b" != "$a"; do
    b="$a";
    for (( i=1; i<${#alphabet[@]}; i++ )); do
      eval a=\$\{a/${alphabet[$i-1]}+/${alphabet[$i]}\}
    done
    a=${a/z+/+a}; a=${a/#+/a}
  done
  echo $b
}
Tombik avatar 11.3.2009 12:49 Tombik | skóre: 12
Rozbalit Rozbalit vše Re: Incrementacia stringu v bash-i

Skvele diky, ani nemusis hovorit ako to funguje myslim ze je to celkom jasne z toho kodu, aj som to riesil cez pole len som sa nevedel dopatrat ku konkretnemu spravnemu rieseniu, stale som sa niekde zasekaval, v bashi som celkom novacik. Este raz diky moc :)

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.