|
Can You Find the Time?: Listings |
Listing 1: The script--originally published in the August 1993 ``Answers to Unix'' column--that converts numbers to English words.
1 if echo $1 | grep -v '^[0-9]*\.[0-9]*$' > /dev/null
2 then
3 echo "argument must contain only numbers and a period"
4 exit 1
5 fi
6 echo "$1" |
7 awk '{dlrs = int($0)
8 cents = int(($0 - dlrs) * 100 + .5)
9 nbrs[0] = ""
10 nbrs[1] = "one"
11 nbrs[2] = "two"
12 nbrs[3] = "three"
13 nbrs[4] = "four"
14 nbrs[5] = "five"
15 nbrs[6] = "six"
16 nbrs[7] = "seven"
17 nbrs[8] = "eight"
18 nbrs[9] = "nine"
19 nbrs[10] = "ten"
20 nbrs[11] = "eleven"
21 nbrs[12] = "twelve"
22 nbrs[13] = "thirteen"
23 nbrs[14] = "fourteen"
24 nbrs[15] = "fiveteen"
25 nbrs[16] = "sixteen"
26 nbrs[17] = "seventeen"
27 nbrs[18] = "eighteen"
28 nbrs[19] = "nineteen"
29 nbrs[20] = "twenty"
30 nbrs[30] = "thirty"
31 nbrs[40] = "fourty"
32 nbrs[50] = "fifty"
33 nbrs[60] = "sixty"
34 nbrs[70] = "seventy"
35 nbrs[80] = "eighty"
36 nbrs[90] = "ninety"
37 if (dlrs > 1000000) {
38 print "Number greater than one million, too big"
39 exit
40 }
41 if (dlrs == 0)
42 nbrstr = "no"
43 if (dlrs >= 100000) {
44 nbrstr = nbrs[int(dlrs / 100000)] " hundred "
45 dlrs = dlrs % 100000
46 thousflag++ # should thousand be put in nbrstr
47 }
48 if (dlrs >= 1000) {
49 nbr = int(dlrs / 1000)
50 if (nbr > 20)
51 tens = int(nbr / 10) * 10
52 else
53 tens = nbr
54 if (ones = nbr - tens)
55 dash = "-" # dash in twenty-one to ninety-nine
56 nbrstr = nbrstr nbrs[tens] dash nbrs[ones]
57 dlrs = dlrs % 1000
58 dash = ""
59 thousflag++
60 }
61 if (thousflag)
62 nbrstr = nbrstr " thousand "
63 if (dlrs >= 100) {
64 nbrstr = nbrstr nbrs[int(dlrs / 100)] " hundred "
65 dlrs = dlrs % 100
66 }
67 if (dlrs > 20)
68 tens = int(dlrs / 10) * 10
69 else
70 tens = dlrs
71 if (ones = dlrs - tens)
72 dash = "-"
73 nbrstr = nbrstr nbrs[tens] dash nbrs[ones]
74 printf "%s %2d/00\n", nbrstr, cents
75 }'
Listing 2. The
|
Print This Page Send as e-mail |












