The UNIX and Linux Forums  

Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
Unix: post skicka frågan .. pls hjälpa mig snart bobprabhu UNIX for Dummies Frågor & Svar 2 02-01-2008 05:44
Unix Login Utgåva freakygs UNIX för avancerade & Expertanvändare 1 01-16-2008 08:21
Utgåva med Unix katt kommando RcR Shell-programmering och Skript 13 10-31-2007 05:54
Unix kommando mmin fråga Mohee UNIX for Dummies Frågor & Svar 1 08-30-2007 11:41
Unix i en Windows miljö fråga Aisha Sturkey UNIX for Dummies Frågor & Svar 6 05-02-2005 10:44

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ök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 02-12-2008
thambi thambi is offline
Registered User
  
 

Join Date: mars 2007
Inlägg: 32
Question Unix Arithmatic drift fråga datatyp fråga

Hej,
Jag har ett shell scripting. Detta kommer att ta 7-siffrigt nummer i varje rad och tillsätt 7 siffrigt nummer med nästföljande linjer (normalt tillägg).

Exempel:

0000001
0000220
0001235
0000022
0000023
...........
.........
........


Like this Jag har runt 1500000 poster. Efter tillägger börjar jag bli resultatet 2147483647 men det faktiska resultatet är 2156379608. Jag hittade orsaken till denna fråga är att Unix temproary variabel bara kan inneha 2156379608 (intervall av heltal) eftersom det är 32 bit. För t ex:

en \u003d 2147483647
expr $ a + 2

Du kommer att få negativa resultat. Därför att uttr arbetar, kommer resultatet att lagras i inre temporär variabel eller registrera dig då du kommer att få resultatet .. men att särskild tillfälligt variabel eller register kan rymma endast 2147483647 .. om man passerar gränsen kan du få skräppost värde like-ve värderingar ... detta är min finiding i denna fråga .. Men jag vill ha lösning på detta problem. hur du lägger till eller göra arthimatic opration om jag vill ha resultat mer än gränsvärdet (2147483647). Jag menar

en \u003d 2147483647
expr $ a + 2

det är jag behöver för att få rätt resultat snarare än-ve värde.
  #2 (permalänk)  
Old 02-12-2008
jim McNamara jim mcnamara is online now Forum Staff  
...@...
  
 

Join Date: februari 2004
Ort: NM
Inlägg: 5.808
Detta kommer att hantera upp till 15 signifcant siffror:

Kod:
 awk ' {total+=$0} END { print total} ' file

Detta kommer att hantera större siffror beroende på din version av BC:

Kod:
#/bin/ksh
total=0
while read value
do
    total=$(echo "$value + $total" | bc )
done < file
echo $total

  #3 (permalänk)  
Old 02-13-2008
thambi thambi is offline
Registered User
  
 

Join Date: mars 2007
Inlägg: 32
Question Svara

Hej,

Tack. Vi använder också den awk för arthitmatic operation. Men vi får exepected resultat. Jag försökte med din kod också.

$ Awk '(totalt + \u003d $ 0) END (print total)' hash_column_wrong.txt
2.15638e 09

Jag fick resultatet i expontial format. Men jag behöver resultatet med alla siffror. Hur man åstadkommer detta?. Sedan andra metoden som du visat med BC räknaren tar mer tid att complte. Så jag tror awk är den bästa metoden. Från och med nu börjar jag bli resultatet som 2.15638e 09. men jag måste få resultat som 2156380000. Please help me.

Hälsningar,
Thambi
  #4 (permalänk)  
Old 02-13-2008
manas_ranjan's Avatar
manas_ranjan manas_ranjan is offline
Registered User
  
 

Join Date: Jul 2007
Plats: Amsterdam
Inlägg: 177
Du kan lämna en förteckning över hash_column_wrong.txt????
  #5 (permalänk)  
Old 02-13-2008
thambi thambi is offline
Registered User
  
 

Join Date: mars 2007
Inlägg: 32
Svar ..

Som jag redan nämnt, finns det bara 7 digiti nummer i varje rad. Liksom dessa har denna fil omkring 150000. Vi behöver bara lägga till alla rader .. det är allt

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 (permalänk)  
Old 02-13-2008
otheus's Avatar
otheus otheus is offline Forum Staff  
Moderator ala Mode
  
 

Join Date: februari 2007
Location: Innsbruck, Österrike
Inlägg: 1.893
Använd awk för att förbereda filen för bc.

(Awk '(print $ 0 "+ \ \")' Tabellutrymmen för stora filer, echo 0;) | bc

Förutsatt bc använder godtycklig precision biblioteket, borde du inte har ett problem här.
  #7 (permalänk)  
Old 02-13-2008
thambi thambi is offline
Registered User
  
 

Join Date: mars 2007
Inlägg: 32
Svar ....

När jag kör följande kommando

awk '(print $ 0 "+ \ \")' hash_column_wrong.txt | BC

Jag fick nedanstående undantag ..

kombinationserbjudanden utrymme överskrids på linje 1,
kombinationserbjudanden utrymme överskrids på linje 1,
kombinationserbjudanden utrymme överskrids på linje 1,

Det beror på \ n karaktär som förekommer änden av linjen?.
Closed Thread

Komihåglista

Taggar
bc, stora siffror, gawk, summan av kolumn

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 12:35.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0