![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
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. |
|
||||
|
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
|
|
||||
|
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 |
|
||||
|
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 ..,., ........ ....... |
|
||||
|
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?. |
![]() |
| Komihåglista |
| Taggar |
| bc, stora siffror, gawk, summan av kolumn |
| Thread Tools | Sök i denna tråd |
| Visningslägen | Betygsätt denna tråd |
|
|