Есть более простой способ:
- Создайте переменную bash так же, как ваш
foo
.
- Передайте эту полную строку Awk, и пусть awk сделает все остальное:
Это дает:
awk -v fields="$foo" 'BEGIN{split(fields,f)}{ for(i in f) if ($(f[i]) < 10) print }' file
Конечно, теперь вы можете выполнять различные условия:
предположим, bar
это список условий
$ foo="22 24 29 33"
$ bar="10 20 30 40"
$ awk -v fields="$foo" -v conditions="$bar" '
BEGIN{split(fields,f); split(conditions,c)}
{ for(i in f) if ($(f[i]) < c[i]) { print; next } }' file
примечание: , поскольку ваш вопрос немного нечеток, я не знал, что на самом деле должен делать ваш сценарий. Тем не менее, я надеюсь, что это дает вам представление.
после редактирования
$ awk -v fields="$foo" '
BEGIN{split(fields,f)}
{ a=1; for(i in f) a = a&& ($(f[i]) >= 5) }
a' file