The UNIX and Linux Forums  
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.

Go Back   UNIX og Linux Forums > Top Forums > Shell Programmering og Scripting
.
google unix.com



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

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Søg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 02-12-2008
thambi thambi is offline
Registreret Bruger
  
 

Join Date: Mar 2007
Stillinger: 32
Question Unix Arithmatic operation spørgsmål, Datatype spørgsmål

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.
  #2 (permalink)  
Old 02-12-2008
jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: Feb 2004
Beliggenhed: NM
Indlæg: 5.763
Dette vil håndtere op til 15 signifcant cifre:
Code:
 awk ' {total+=$0} END { print total} ' file
Dette vil håndtere større tal afhængigt af din version af BC:
Code:
#/bin/ksh
total=0
while read value
do
    total=$(echo "$value + $total" | bc )
done < file
echo $total
  #3 (permalink)  
Old 02-13-2008
thambi thambi is offline
Registreret Bruger
  
 

Join Date: Mar 2007
Stillinger: 32
Question Svar

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
  #4 (permalink)  
Old 02-13-2008
manas_ranjan's Avatar
manas_ranjan manas_ranjan is offline
Registreret Bruger
  
 

Join Date: Jul 2007
Beliggenhed: Amsterdam
Posts: 177
kan du bedes listen over hash_column_wrong.txt????
  #5 (permalink)  
Old 02-13-2008
thambi thambi is offline
Registreret Bruger
  
 

Join Date: Mar 2007
Stillinger: 32
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
..,.,
........
.......
  #6 (permalink)  
Old 02-13-2008
otheus's Avatar
otheus otheus is offline Forum Staff  
Redaktør ala Mode
  
 

Join Date: Feb 2007
Sted: Innsbruck, Østrig
Posts: 1.886
Brug awk at forberede sagen til bc.

(Awk '(print $ 0 "+ \ \")' bigfile; echo 0;) | bc

Hvis man antager, bc bruger vilkårlig præcision bibliotek, bør du ikke har et problem her.
  #7 (permalink)  
Old 02-13-2008
thambi thambi is offline
Registreret Bruger
  
 

Join Date: Mar 2007
Stillinger: 32
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?.
Closed Thread

Bogmærker

Tags
bc, store tal, gawk, summen af kolonne

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er
Smilies er
[IMG] koden er
HTML-koden er Slukket
Trackbacks er
Pingbacks er
Refbacks er




Alle tidspunkter er GMT -4. Den tid er nu 10:47 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0