Я нашел этот полезный ответ на SO на проблему, с которой я столкнулся (https://stackoverflow.com/a/30387380)
Однако я не могу понять, как использовать конструкцию внутри цикла for.
Ниже моя последняя попытка
awk '
BEGIN{split(ENVIRON["LABELS"], label)}
{
for (i = 1; i <= NF; i++)
!found && /label[i]/ { print "# "label[i];found=1} 1
}' >> "${TMPFIL}"
Но это не с:
awk: syntax error at source line 5
context is
!found && /label[i]/ >>> { <<<
awk: illegal statement at source line 5
РЕДАКТИРОВАТЬ ДОБАВИТЬ ДЕТАЛИ ...
В дополнение к ответу @Inian, который нуждается в дальнейшей доработке, вот еще немного фона, чтобы помочь.
У меня есть список чтений (в текстовом файле):
Foo{foober="x"} 5
Foo{foober="x"} 5
Bar{barfoo="y"} 0
Bar{barfoo"y"} 0
Итак, что-то вроде:
LABELS='
Foo
Bar' \
awk '
BEGIN{split(ENVIRON["LABELS"], label)}
{
for (i = 1; i <= NF; i++)
!found && /label[i]/ { print "# "label[i];found=1} 1
}' >> "${TMPFIL}"
Ожидаемый результат выглядит следующим образом:
# Foo
Foo{foober="x"} 5
Foo{foober="x"} 5
# Bar
Bar{barfoo="y"} 0
Bar{barfoo"y"} 0