⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getopt.awk

📁 gawk: linux下资料处理工具
💻 AWK
字号:
# getopt.awk --- do C library getopt(3) function in awk## Arnold Robbins, arnold@skeeve.com, Public Domain## Initial version: March, 1991# Revised: May, 1993# 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#    <c>    a character representing the current option# Private Data:#    _opti  -- index in multi-flag option, e.g., -abcfunction getopt(argc, argv, options,    thisopt, i){    if (length(options) == 0)    # no options given        return -1    if (argv[Optind] == "--") {  # all done        Optind++        _opti = 0        return -1    } else if (argv[Optind] !~ /^-[^: \t\n\f\r\v\b]/) {        _opti = 0        return -1    }    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}BEGIN {    Opterr = 1    # default is to diagnose    Optind = 1    # skip ARGV[0]    # test program    if (_getopt_test) {        while ((_go_c = getopt(ARGC, ARGV, "ab:cd")) != -1)            printf("c = <%c>, optarg = <%s>\n",                                       _go_c, Optarg)        printf("non-option arguments:\n")        for (; Optind < ARGC; Optind++)            printf("\tARGV[%d] = <%s>\n",                                    Optind, ARGV[Optind])    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -