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

📄 igawk.sh

📁 gawk: linux下资料处理工具
💻 SH
字号:
#! /bin/sh# igawk --- like gawk but do @include processing## Arnold Robbins, arnold@skeeve.com, Public Domain# July 1993if [ "$1" = debug ]then    set -x    shiftfi# A literal newline, so that program text is formatted correctlyn=''# Initialize variables to emptyprogram=opts=while [ $# -ne 0 ] # loop over argumentsdo    case $1 in    --)     shift; break;;    -W)     shift            # The ${x?'message here'} construct prints a            # diagnostic if $x is the null string            set -- -W"${@?'missing operand'}"            continue;;    -[vF])  opts="$opts $1 '${2?'missing operand'}'"            shift;;    -[vF]*) opts="$opts '$1'" ;;    -f)     program="$program$n@include ${2?'missing operand'}"            shift;;    -f*)    f=`expr "$1" : '-f\(.*\)'`            program="$program$n@include $f";;    -[W-]file=*)            f=`expr "$1" : '-.file=\(.*\)'`            program="$program$n@include $f";;    -[W-]file)            program="$program$n@include ${2?'missing operand'}"            shift;;    -[W-]source=*)            t=`expr "$1" : '-.source=\(.*\)'`            program="$program$n$t";;    -[W-]source)            program="$program$n${2?'missing operand'}"            shift;;    -[W-]version)            echo igawk: version 2.0 1>&2            gawk --version            exit 0 ;;    -[W-]*) opts="$opts '$1'" ;;    *)      break;;    esac    shiftdoneif [ -z "$program" ]then     program=${1?'missing program'}     shiftfi# At this point, `program' has the program.expand_prog='function pathto(file,    i, t, junk){    if (index(file, "/") != 0)        return file    for (i = 1; i <= ndirs; i++) {        t = (pathlist[i] "/" file)        if ((getline junk < t) > 0) {            # found it            close(t)            return t        }    }    return ""}BEGIN {    path = ENVIRON["AWKPATH"]    ndirs = split(path, pathlist, ":")    for (i = 1; i <= ndirs; i++) {        if (pathlist[i] == "")            pathlist[i] = "."    }    stackptr = 0    input[stackptr] = ARGV[1] # ARGV[1] is first file    for (; stackptr >= 0; stackptr--) {        while ((getline < input[stackptr]) > 0) {            if (tolower($1) != "@include") {                print                continue            }            fpath = pathto($2)            if (fpath == "") {                printf("igawk:%s:%d: cannot find %s\n",                    input[stackptr], FNR, $2) > "/dev/stderr"                continue            }            if (! (fpath in processed)) {                processed[fpath] = input[stackptr]                input[++stackptr] = fpath  # push onto stack            } else                print $2, "included in", input[stackptr],                    "already included in",                    processed[fpath] > "/dev/stderr"        }        close(input[stackptr])    }}'  # close quote ends `expand_prog' variableprocessed_program=`gawk -- "$expand_prog" /dev/stdin <<EOF$programEOF`eval gawk $opts -- '"$processed_program"' '"$@"'

⌨️ 快捷键说明

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