egrep.awk

来自「gawk: linux下资料处理工具」· AWK 代码 · 共 103 行

AWK
103
字号
# egrep.awk --- simulate egrep in awk## Arnold Robbins, arnold@skeeve.com, Public Domain# May 1993# Options:#    -c    count of lines#    -s    silent - use exit value#    -v    invert test, success if no match#    -i    ignore case#    -l    print filenames only#    -e    argument is pattern## Requires getopt and file transition library functionsBEGIN {    while ((c = getopt(ARGC, ARGV, "ce:svil")) != -1) {        if (c == "c")            count_only++        else if (c == "s")            no_print++        else if (c == "v")            invert++        else if (c == "i")            IGNORECASE = 1        else if (c == "l")            filenames_only++        else if (c == "e")            pattern = Optarg        else            usage()    }    if (pattern == "")        pattern = ARGV[Optind++]    for (i = 1; i < Optind; i++)        ARGV[i] = ""    if (Optind >= ARGC) {        ARGV[1] = "-"        ARGC = 2    } else if (ARGC - Optind > 1)        do_filenames++#    if (IGNORECASE)#        pattern = tolower(pattern)}#{#    if (IGNORECASE)#        $0 = tolower($0)#}function beginfile(junk){    fcount = 0}function endfile(file){    if (! no_print && count_only)        if (do_filenames)            print file ":" fcount        else            print fcount    total += fcount}{    matches = ($0 ~ pattern)    if (invert)        matches = ! matches    fcount += matches    # 1 or 0    if (! matches)        next    if (! count_only) {        if (no_print)            nextfile        if (filenames_only) {            print FILENAME            nextfile        }        if (do_filenames)            print FILENAME ":" $0        else            print    }}END    \{    if (total == 0)        exit 1    exit 0}function usage(    e){    e = "Usage: egrep [-csvil] [-e pat] [files ...]"    e = e "\n\tegrep [-csvil] pat [files ...]"    print e > "/dev/stderr"    exit 1}

⌨️ 快捷键说明

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