Portál AbcLinuxu, 13. května 2025 19:53

Dotaz: bash - spocitani cisel

11.7.2012 15:58 marcelius | skóre: 19
bash - spocitani cisel
Přečteno: 223×
Odpovědět | Admin
Dobry den.

Sem zacatecnik co se tyce psani skriptu v bashi a potrebuji poradit. Mozna se jedna o trivialni vec, ale nevim si s tim rady. Mam soubor.log ve kterem je par cisel ve stloupci napr.:

2

6

7

A potrebuji to spocitat, ale nevim presne kolik cisel tam bude. To se stale bude menit.

Muzete mi poradit jak na to? Dekuji.

Ř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

11.7.2012 16:14 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: bash - spocitani cisel
Odpovědět | | Sbalit | Link | Blokovat | Admin
Spočítat (počet) nebo sečíst?
man wc [počet]
man paste [sečtení]
man bc [sečtení]
I am always ready to learn although I do not always like to be taught. (W. Churchill)
11.7.2012 16:31 marcelius | skóre: 19
Rozbalit Rozbalit vše Re: bash - spocitani cisel
omlouvam, myslel sem secteni.

bc sem zkousel, ale stale sem neprisel na to jak sectu cisla ve souboru...
11.7.2012 16:42 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: bash - spocitani cisel
bc sem zkousel, ale stale sem neprisel na to jak sectu cisla ve souboru...
bc se dá nakrmit i rourou...
echo "1+2+3" | bc
I am always ready to learn although I do not always like to be taught. (W. Churchill)
11.7.2012 17:19 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: bash - spocitani cisel
sum='0'; while read line; do if [ -n "${line}" ]; then sum=$(echo "${sum}+${line}" | bc) ; fi; done < numbers; echo ${sum};
Čitelně tedy
#!/bin/bash

sum='0'
while read line; do
  if [ -n "${line}" ]; then
    sum=$(echo "${sum}+${line}" | bc)
   fi
done < numbers;
echo ${sum}
PS: ignoruje prázdné řádky
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
11.7.2012 17:07 FxF
Rozbalit Rozbalit vše Re: bash - spocitani cisel
Odpovědět | | Sbalit | Link | Blokovat | Admin
Možností je plno, tady je jedna citace z internetu:

sum=0; while read num ; do sum=$(($sum + $num)); done < soubor.log ; echo $sum

11.7.2012 17:32 marcelius | skóre: 19
Rozbalit Rozbalit vše Re: bash - spocitani cisel
diki, na tohle sem uz narazil a pouzil to, dik
11.7.2012 17:22 ramish
Rozbalit Rozbalit vše Re: bash - spocitani cisel
Odpovědět | | Sbalit | Link | Blokovat | Admin
Skus napr toto:

paste -sd+ soubor.log | bc

za predpokladu ze nebudes mat prazdne riadky v subore soubor.log.

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.