translate.awk

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

AWK
48
字号
# translate.awk --- do tr-like stuff## Arnold Robbins, arnold@skeeve.com, Public Domain# August 1989# Bugs: does not handle things like: tr A-Z a-z, it has# to be spelled out. However, if `to' is shorter than `from',# the last character in `to' is used for the rest of `from'.function stranslate(from, to, target,     lf, lt, t_ar, i, c){    lf = length(from)    lt = length(to)    for (i = 1; i <= lt; i++)        t_ar[substr(from, i, 1)] = substr(to, i, 1)    if (lt < lf)        for (; i <= lf; i++)            t_ar[substr(from, i, 1)] = substr(to, lt, 1)    for (i = 1; i <= lf; i++) {        c = substr(from, i, 1)        if (index(target, c) > 0)            gsub(c, t_ar[c], target)    }    return target}function translate(from, to){    return $0 = stranslate(from, to, $0)}# main programBEGIN {    if (ARGC < 3) {        print "usage: translate from to" > "/dev/stderr"        exit    }    FROM = ARGV[1]    TO = ARGV[2]    ARGC = 2    ARGV[1] = "-"}{    translate(FROM, TO)    print}

⌨️ 快捷键说明

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