![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her. |
Mer UNIX og Linux Forum Emner Du kan finne nyttig
|
||||
| Tråd | Tråd startet | Forum | Svar | Siste innlegg |
| Unix: mail sending problemet .. pls hjelpe meg snart | bobprabhu | UNIX for Dummies Spørsmål og svar | 2 | 02-01-2008 05:44 |
| Unix Login Issue | freakygs | UNIX for Advanced & ekspertbrukere | 1 | 01-16-2008 08:21 |
| Problem med Unix cat kommandoen | RcR | Shell programmering og Skripting | 13 | 10-31-2007 05:54 |
| Unix-kommandoen mmin problemet | Mohee | UNIX for Dummies Spørsmål og svar | 1 | 08-30-2007 11:41 |
| Unix i et Windows-miljø problemet | Aisha Sturkey | UNIX for Dummies Spørsmål og svar | 6 | 05-02-2005 10:44 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
Hei,
Jeg har et shell scripting. Dette tar 7-sifret tall i hver linje og legger 7-sifret tall med neste påfølgende linjer (normal tillegg). F.eks: 0000001 0000220 0001235 0000022 0000023 ........... ......... ........ Som dette jeg har rundt 1500000 poster. Etter å legge til, får jeg resultatet 2147483647 men faktiske resultatet er 2156379608. Jeg fant det rot årsak til dette problemet er at Unix temproary variabel kan inneholde bare 2156379608 (Utvalg av heltall) så det er 32 bit. For eksempel: A \u003d 2147483647 expr $ a + 2 du får negativt resultat. Fordi mens expr arbeider, vil resultatet bli lagret i det interne midlertidige variabel eller registrere deg så får du resultatet .. men at spesielle midlertidige variabel eller registrer rommer kun 2147483647 .. hvis den krysser denne grensen, kan du få useriøs verdien som-ve verdier ... dette er min finiding for dette problemet .. Men jeg vil ha løsning på dette problemet. hvordan du legger til eller gjøre arthimatic opration hvis jeg vil ha resultatet mer enn grensen (2147483647). Jeg mener A \u003d 2147483647 expr $ a + 2 for jeg trenger å få riktig resultat fremfor-ve verdi. |
|
||||
|
Dette vil håndtere opptil 15 signifcant sifre:
Code:
awk ' {total+=$0} END { print total} ' file
Code:
#/bin/ksh
total=0
while read value
do
total=$(echo "$value + $total" | bc )
done < file
echo $total
|
|
||||
|
Hei,
Takk. Vi er også å bruke awk for arthitmatic drift. Men vi ikke får exepected resultat. Jeg prøvde med koden din også. $ Awk '(total + \u003d $ 0) END (print totalt)' hash_column_wrong.txt 2.15638e 09 Jeg fikk resultatet i expontial format. Men jeg trenger resultatet med alle siffer. Hvordan oppnå dette?. Da andre metoden som du vist med bc kalkulatoren tar lengre tid å complte. Så jeg tror awk er den beste metoden. I øyeblikket får jeg resultatet som 2.15638e 09. men jeg trenger for å få resultatet like 2156380000. Behage hjelpe meg. Hilsen, Thambi |
|
||||
|
Svar ..
Som jeg allerede nevnt, den inneholder bare de 7 digiti antallet i hver rad. I likhet med disse, har denne filen rundt 150.000. Vi trenger bare å legge alle radene .. det er alt
0000001 0000343 0000001 0001426 0000001 0000718 0000162 0000103 0000021 0000011 0000016 0000312 0000026 0000031 0000005 0000022 0000001 0000001 0011845 0003713 0000001 0000011 0000001 0000001 0000001 ..,., ........ ....... |
|
||||
|
Svar ....
Når jeg kjører under kommando
awk '(print $ 0 "+ \ \")' hash_column_wrong.txt | bc Jeg har nedenfor unntak .. bundling plass overskredet på linje 1, bundling plass overskredet på linje 1, bundling plass overskredet på linje 1, er det grunn til \ n tegnet som oppstår enden av linjen?. |
![]() |
| Hugseliste |
| Tags |
| bc, store tallene, gawk, summen av kolonnen |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|