/usr/share/awk
NameSizeModeActions
assert.awk3830644editdlrm
bits2str.awk3340644editdlrm
cliff_rand.awk3070644editdlrm
ctime.awk2340644editdlrm
ftrans.awk3150644editdlrm
getopt.awk22020644editdlrm
gettime.awk24910644editdlrm
group.awk17650644editdlrm
have_mpfr.awk2210644editdlrm
inplace.awk19960644editdlrm
intdiv0.awk4620644editdlrm
join.awk3780644editdlrm
libintl.awk2380644editdlrm
noassign.awk4220644editdlrm
ord.awk9370644editdlrm
passwd.awk11990644editdlrm
processarray.awk3550644editdlrm
quicksort.awk10310644editdlrm
readable.awk4890644editdlrm
readfile.awk2670644editdlrm
rewind.awk4040644editdlrm
round.awk6610644editdlrm
shellquote.awk4720644editdlrm
strtonum.awk14540644editdlrm
walkarray.awk2140644editdlrm
zerofile.awk4240644editdlrm
Edit: /usr/share/awk/strtonum.awk (1454B)
# mystrtonum --- convert string to number # # Arnold Robbins, arnold@skeeve.com, Public Domain # February, 2004 # Revised June, 2014 function mystrtonum(str, ret, n, i, k, c) { if (str ~ /^0[0-7]*$/) { # octal n = length(str) ret = 0 for (i = 1; i <= n; i++) { c = substr(str, i, 1) # index() returns 0 if c not in string, # includes c == "0" k = index("1234567", c) ret = ret * 8 + k } } else if (str ~ /^0[xX][[:xdigit:]]+$/) { # hexadecimal str = substr(str, 3) # lop off leading 0x n = length(str) ret = 0 for (i = 1; i <= n; i++) { c = substr(str, i, 1) c = tolower(c) # index() returns 0 if c not in string, # includes c == "0" k = index("123456789abcdef", c) ret = ret * 16 + k } } else if (str ~ \ /^[-+]?([0-9]+([.][0-9]*([Ee][0-9]+)?)?|([.][0-9]+([Ee][-+]?[0-9]+)?))$/) { # decimal number, possibly floating point ret = str + 0 } else ret = "NOT-A-NUMBER" return ret } # BEGIN { # gawk test harness # a[1] = "25" # a[2] = ".31" # a[3] = "0123" # a[4] = "0xdeadBEEF" # a[5] = "123.45" # a[6] = "1.e3" # a[7] = "1.32" # a[8] = "1.32E2" # # for (i = 1; i in a; i++) # print a[i], strtonum(a[i]), mystrtonum(a[i]) # }