Интересно, можно ли это сделать в AWK в течение некоторого времени, но всегда работало вокруг него в прошлом.Заменить элементы массива в выражения регулярных выражений/переменные имена
Ниже я инициализирую массив с 3 месяцами года ... для удобства чтения я пропустил остальные 9 месяцев. Эти месяцы затем используются в if-statement как часть регулярного выражения, но AWK ему это не нравится. Кажется, я не могу найти что-либо в руководствах awk/gawk относительно такого рода семантики ... Я действительно застрял с повторением одного и того же кода 12 раз? Также можно использовать arr [i] в цикле как подстроку имени переменной? Я написал псевдокод ниже, чтобы дать представление о том, чего я пытаюсь выполнить. Я знаю, что это можно сделать в SNOBOL ;-) Спасибо!
BEGIN {
arr[0] = "AUG"
arr[1] = "SEP"
arr[2] = "OCT"
}
{
for(i in arr)
{
if($1 ~ /arr[i]/)
{
#Controls flows into here if $1 matches AUG, SEP, OCT
#Furthermore, pretend I want to intialize a variable like AUGseen:
arr[i]seen = 1
}
}
}
Если любая из этих вещей выполнима, я очень ценю указатели!
Вы не хотите создавать переменную типа «AUGseen» - динамические имена переменных неприятны. Вы также должны использовать массив: 'seen [arr [i]] = 1' –