unix - awk - 在用户定义的函数中打印参数名称

时间:2012-01-02 03:06:05

标签: linux bash shell unix awk

在bash脚本中使用下面的awk说:

如何让print_line函数打印传入的参数的名称? 即此输出

array passed in was:
arrayprime
array passed in was:
arraymagic

只是代码要点的片段(不是整件事):

awk -F"$delim" '
NR>1 { 

        print_line(arrayprime)
        print_line(arraymagic)
}
    func print_line(arr)
    {
        print "array passed in was:"
            print arr
    }

} ' "$filename"

1 个答案:

答案 0 :(得分:5)

不,awk没有能力成为这种内省。

C语言可以通过使用C预处理器来实现。如果你真的想将这种类型的行为转移到你的awk函数中,那么你可以考虑使用C预处理器或者写一个GNU M4 macro

如果您愿意再添加一个参数,则可以这样做。

awk -F"$delim" '
NR>1 { 

        print_line(arrayprime, "arrayprime")
        print_line(arraymagic, "arraymagic")
}
    func print_line(arr, name)
    {
        print "array passed in was:"
            print name
    }

}' "$filename"