как насчет:
Переменные:
/home/sirch>KEYS="key_1 key_2 key_3"
/home/sirch>VALS="value1 aDifferentValue_2 theFinalValue"
Код:
/home/sirch>cat s.awk
BEGIN{
split(keystring,key," ");
split(valstring,temp," ")
for(i=1;i<=length(key);i++)val[key[i]]=temp[i]
}
END{print val["key_2"]}
Выход:
/home/sirch>awk -v "keystring=$KEYS" -v "valstring=$VALS" -v "query=key_02" -f s.awk f
aDifferentValue_2
Сначала устанавливаются переменные оболочки KEYS и VALS. Затем они экспортируются в akw в виде строк.
Эти строки затем разделяются на пробелы, полученные массивы сохраняются в «ключ» и «темп». temp используется для создания хеш-карты vinal "val". Теперь вы можете запросить val ["key_1"] и т. Д., Чтобы получить соответствующее значение из строки оболочки VALS.
Чтобы запустить это из сценария оболочки, просто сохраните сценарий awk в файл. Затем установите запрос переменной оболочки в строку запроса и вызовите awk-скрипт из скрипта оболочки с этой переменной. Вам нужно будет дать фиктивный файл, здесь "f", в качестве аргумента для awk, чтобы эта работа работала.
HTH Крис