/usr/share/awk
NameSizeModeActions
assert.awk3830644editdlrm
bits2str.awk3340644editdlrm
cliff_rand.awk3070644editdlrm
ctime.awk2340644editdlrm
ftrans.awk3150644editdlrm
getopt.awk32780644editdlrm
gettime.awk24910644editdlrm
group.awk17780644editdlrm
have_mpfr.awk2210644editdlrm
inplace.awk23400644editdlrm
intdiv0.awk4620644editdlrm
join.awk3780644editdlrm
libintl.awk2380644editdlrm
noassign.awk4220644editdlrm
ns_passwd.awk12820644editdlrm
ord.awk9370644editdlrm
passwd.awk12120644editdlrm
processarray.awk3550644editdlrm
quicksort.awk10310644editdlrm
readable.awk4890644editdlrm
readfile.awk2670644editdlrm
rewind.awk4040644editdlrm
round.awk6610644editdlrm
shellquote.awk4720644editdlrm
strtonum.awk14540644editdlrm
walkarray.awk2140644editdlrm
zerofile.awk4240644editdlrm
Edit: /usr/share/awk/getopt.awk (3278B)
# getopt.awk --- Do C library getopt(3) function in awk # Also supports long options. # # Arnold Robbins, arnold@skeeve.com, Public Domain # # Initial version: March, 1991 # Revised: May, 1993 # Long options added by Greg Minshall, January 2020 # External variables: # Optind -- index in ARGV of first nonoption argument # Optarg -- string value of argument to current option # Opterr -- if nonzero, print our own diagnostic # Optopt -- current option letter # Returns: # -1 at end of options # "?" for unrecognized option # a string representing the current option # Private Data: # _opti -- index in multiflag option, e.g., -abc function getopt(argc, argv, options, longopts, thisopt, i, j) { if (length(options) == 0 && length(longopts) == 0) return -1 # no options given if (argv[Optind] == "--") { # all done Optind++ _opti = 0 return -1 } else if (argv[Optind] !~ /^-[^:[:space:]]/) { _opti = 0 return -1 } if (argv[Optind] !~ /^--/) { # if this is a short option if (_opti == 0) _opti = 2 thisopt = substr(argv[Optind], _opti, 1) Optopt = thisopt i = index(options, thisopt) if (i == 0) { if (Opterr) printf("%c -- invalid option\n", thisopt) > "/dev/stderr" if (_opti >= length(argv[Optind])) { Optind++ _opti = 0 } else _opti++ return "?" } if (substr(options, i + 1, 1) == ":") { # get option argument if (length(substr(argv[Optind], _opti + 1)) > 0) Optarg = substr(argv[Optind], _opti + 1) else Optarg = argv[++Optind] _opti = 0 } else Optarg = "" if (_opti == 0 || _opti >= length(argv[Optind])) { Optind++ _opti = 0 } else _opti++ return thisopt } else { j = index(argv[Optind], "=") if (j > 0) thisopt = substr(argv[Optind], 3, j - 3) else thisopt = substr(argv[Optind], 3) Optopt = thisopt i = match(longopts, "(^|,)" thisopt "($|[,:])") if (i == 0) { if (Opterr) printf("%s -- invalid option\n", thisopt) > "/dev/stderr" Optind++ return "?" } if (substr(longopts, i+1+length(thisopt), 1) == ":") { if (j > 0) Optarg = substr(argv[Optind], j + 1) else Optarg = argv[++Optind] } else Optarg = "" Optind++ return thisopt } } BEGIN { Opterr = 1 # default is to diagnose Optind = 1 # skip ARGV[0] # test program if (_getopt_test) { _myshortopts = "ab:cd" _mylongopts = "longa,longb:,otherc,otherd" while ((_go_c = getopt(ARGC, ARGV, _myshortopts, _mylongopts)) != -1) printf("c = <%s>, Optarg = <%s>\n", _go_c, Optarg) printf("non-option arguments:\n") for (; Optind < ARGC; Optind++) printf("\tARGV[%d] = <%s>\n", Optind, ARGV[Optind]) } }