Сценарий, написанный на Bash, передает аргументы Awk, например sample_name==10
.
Затем Awk находит, какой столбец в таблице соответствует sample_name
, и перезаписывает аргумент, соответствующий левой части выражения, например $1 == 10
.
Но я не знаю, как на самом деле оценить условие, когда оно хранится как переменная. Проблема главным образом в том, что мы хотим иметь возможность передавать все виды условий, включая регулярные выражения назад.
Итак, я кодировал некоторые обходные пути, которые фактически привели к тому, что сценарий взорвался за пределы своей первоначальной цели.
for (c in where_col) {
((where_math[c] == "==" && $where_idx[c] == where_val[c]) ||
(where_math[c] == ">=" && $where_idx[c] >= where_val[c]) ||
(where_math[c] == "<=" && $where_idx[c] <= where_val[c]) ||
(where_math[c] == "!=" && $where_idx[c] != where_val[c]) ||
(where_math[c] == ">" && $where_idx[c] > where_val[c]) ||
(where_math[c] == "~" && $where_idx[c] ~ where_val[c]) ||
(where_math[c] == "<" && $where_idx[c] < where_val[c])) {
#some action
}
Хотя теперь это работает, я ищу способ сделать это более чисто.