for
- а также if
- это оператор, который может только go в части действия действия правила awk, но не в части условия; и //
только для литеральных шаблонов (регулярных выражений), а не переменных:
{ for( i in patterns ) if( $0 ~ patterns[i] ) userFunction( inputs[i] ) }
Однако, поскольку индексы массива awk могут быть любой строкой, также называемой «ассоциативной», вместо того, чтобы сохранять два массива в син c вы можете использовать один:
BEGIN{ pat_inp["pattern1"]="input1"; pat_inp["pattern2"]="input2"; ... }
{ for( i in pat_inp ) if( $0 ~ i ) userFunction( pat_inp[i] ) }