![]() |
|
|
|
|
|||||||
| Forums | Portal | Register | Forum Rules | FAQ | Contribute | Members List | Arcade | Search | Today's Posts | Mark Forums Read |
| UNIX for Dummies Questions & Answers If you're not sure where to post a UNIX or Linux question, post it here. All UNIX and Linux newbies welcome !! |
|
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Output formating | jaydeep_sadaria | Shell Programming and Scripting | 1 | 04-10-2008 09:39 AM |
| formating output | Krrishv | Shell Programming and Scripting | 20 | 02-02-2007 06:39 AM |
| formating date | ragha81 | Shell Programming and Scripting | 2 | 01-05-2007 08:20 AM |
| How to concatenate two strings or several strings into one string in B-shell? | fontana | Shell Programming and Scripting | 2 | 08-26-2005 08:58 AM |
| Disk formating | DPAI | UNIX for Dummies Questions & Answers | 1 | 11-28-2001 05:06 PM |
|
|
Submit Tools | LinkBack | Thread Tools | Search this Thread | Display Modes |
|
#1
|
|||
|
|||
|
formating number strings
I have treid searching for what I thought would be a common question...but to no avail.
I have to long numbers (4-8) digits. how can I format them so they are printed as 1,234,567 rather than 1234567? I have no idea where to start, have played with varying types of awk, print, substr. Also, pecentages.....if you have total amount and amount used how, using expr, can you work out the percentage used? I get 0 as the value. pecent=`expr $used / $avail \* 100` percent, used, and avail have all been set previously as an integer value. PS. I'm no mathsmatitiojkljknjn.....how ever you spell it, so my logic may be wrong. Cheers, Neil |
| Forum Sponsor | ||
|
|
|
#2
|
|||
|
|||
|
Try:
Code:
Percent=$(bc << %%
scale=4
( ${used} / ${avail} ) * 100
quit
%%)
|
|
#3
|
|||
|
|||
|
genius.....don't know what it all means but it works.
Cheers and beers, Neil |
|
#4
|
||||
|
||||
|
Neither used nor avail sounds like a total and you need a total. But, for example 2 is 50% of 4. My mathematical training enables me to construct:
expr 2 \* 100 / 4 which will result in 50. Since you are using expr, you must be using a weak shell. One solution for formatting numbers might be sed: echo 1234567 | sed 's/\(.\)\(...\)\(...\)/\1,\2,\3/' which will only work for 7 digit numbers. You will need similiar sed expressions for other number lengths and you will need to select the right one with if statements. |
|
#5
|
|||
|
|||
|
many thanks.......
This may not be allowed V's questions........ But I'm using ksh....is this a weak shell? if it is what makes it so......I'm always looking to improve my scripting and if changing the shell or the language is required, then so be it. |
|
#6
|
||||
|
||||
|
From: HANDY ONE-LINERS FOR SED
Quote:
|
|
#7
|
||||
|
||||
|
The shell can do integer arithmetic, you don't need to use expr:-
(( percent = 100 * $used / $avail )) echo $percent |
||||
| Google The UNIX and Linux Forums |