unix - awk - вывести имя аргумента в пользовательской функции - PullRequest
0 голосов
/ 02 января 2012

Скажите, используя приведенный ниже awk внутри bash-скрипта:

Как вы можете получить функцию 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 Ответ

5 голосов
/ 02 января 2012

Нет, awk не может быть таким интроспективным.

Язык C может сделать это с помощью препроцессора Си. Если вы действительно хотите внедрить этот тип поведения в вашу функцию awk, то вы можете изучить использование препроцессора C или, возможно, написать макрос GNU M4

Если вы хотите добавить еще один параметр, вы можете это сделать.

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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...