![]() |
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Regler | Links | Albums | FAQ | Members List | Kalender | Søgning | Dagens Stillinger | Mark Forums Read |
| Shell Programmering og Scripting Post spørgsmål om ksh, CSH, SH, Bash, Perl, PHP, SED, AWK og ANDRE shell scripts og Shell scriptsprog her. |
Mere UNIX og Linux Forum Emner du måske kan finde Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Last Post |
| Unix: mail sende spørgsmålet .. pls hjælp mig hurtigt | bobprabhu | UNIX for dummyer Spørgsmål & svar | 2 | 02-01-2008 05:44 AM |
| Unix Login Issue | freakygs | UNIX for Advanced & Ekspertsøgning Brugere | 1 | 01-16-2008 08:21 AM |
| Issue med Unix cat kommando | RcR | Shell Programmering og Scripting | 13 | 10-31-2007 05:54 AM |
| Unix kommando mmin spørgsmål | Mohee | UNIX for dummyer Spørgsmål & svar | 1 | 08-30-2007 11:41 PM |
| Unix i et Windows-miljø spørgsmål | Aisha Sturkey | UNIX for dummyer Spørgsmål & svar | 6 | 05-02-2005 10:44 PM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
Hej,
Jeg har en shell script. Dette vil tage 7-cifrede nummer i hver linje og tilføjer 7-cifrede nummer med næste efterfølgende linjer (normal ud). Fx: 0000001 0000220 0001235 0000022 0000023 ........... ......... ........ Ligesom dette Jeg har omkring 1500000 records. Efter tilføjer, får jeg det resultat, 2147483647, men det faktiske resultat er 2156379608. Jeg fandt den egentlige årsag til dette problem er, at Unix temproary variabel kun kan have 2156379608 (Range af heltal), da det er 32 bit. Til fx: a \u003d 2147483647 expr $ a + 2 du får det negative resultat. Fordi mens expr arbejder, vil resultatet blive gemt i den interne midlertidig variabel eller opret derefter vil du få resultatet .. men at især midlertidig variabel eller opret kan rumme kun 2147483647 .. hvis den krydser denne grænse, kan du få junk værdi som-ve værdier ... dette er min finiding for dette emne .. Men jeg vil gerne have løsning på dette problem. hvordan du tilføjer eller gøre arthimatic opration, hvis jeg vil have resultatet mere end grænsen (2147483647). Jeg mener a \u003d 2147483647 expr $ a + 2 det er jeg nødt til at få det rigtige resultat frem-ve værdi. |
|
||||
|
Dette vil håndtere op til 15 signifcant cifre:
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
|
|
||||
|
Hej,
Tak. Vi er også ved hjælp af awk for arthitmatic drift. Men vi er ikke at få exepected resultat. Jeg forsøgte med din kode også. $ Awk '(total + \u003d $ 0) END (print alt)' hash_column_wrong.txt 2.15638e 09 Jeg fik resultatet i expontial format. Men jeg har brug for det resultat med alle cifre. Hvordan at opnå dette?. Så anden metode, som du vist ved hjælp af bc lommeregneren tager mere tid til at complte. Så jeg tror, awk er den bedste metode. Som nu, får jeg resultatet som 2.15638e 09. men jeg har brug for at få resultatet gerne 2156380000. Please help me. Hilsen, Thambi |
|
||||
|
Svar ..
Som jeg allerede har nævnt, er det kun indeholder de 7 digitaliserings antal i hver række. Som disse, har denne fil omkring 150.000. Vi er bare nødt til at tilføje alle de rækker .. det er det hele
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 kører under kommando
awk '(print $ 0 "+ \ \")' hash_column_wrong.txt | bc Jeg fik nedenstående undtagelse .. bundling plads overskrides på linje 1, bundling plads overskrides på linje 1, bundling plads overskrides på linje 1, Det skyldes til \ n karakter, der opstår slutningen af linjen?. |
![]() |
| Bogmærker |
| Tags |
| bc, store tal, gawk, summen af kolonne |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|