Можно получить то, на что указывает тег фиксации:
git show -s 'TAG_NAME^{commit}' --format='%H'
Unfortunatly я боюсь, что единственный способ проверить, отмечена ли фиксация он для проверки всех тегов.
Единственная конструкция, которая устанавливает много элементов массива сразу, split
функция (по крайней мере, в стандарте awk, GNU awk может иметь другие возможности). Это присваивает числовым индексам. Таким образом, Вы не можете выйти из цикла, если Вы хотите сделать ассоциативный массив.
Можно, однако, изменить тест исключения для не использования массива. Если строки для исключения не содержат regexp специального символа (().?*+[]\^$
), можно рассматривать значение var
как regexp для соответствия против, с небольшой тонкой настройкой. Это может быть немного медленнее, чем использование массива, но вероятно не в известной мере поэтому, если у Вас нет большого количества строк для исключения.
BEGIN { exclude = "^(" var ")$" }
match(dest, exclude) { … }
Другой подход должен рассматривать var
как конкатенация строк для исключения; dest
должен быть исключен, если, появляется в var
между |
. Это будет снова медленнее, чем соответствие regexp, но только в известной мере так для достаточно больших списков исключения.
BEGIN { exclude = "|" var "|" }
index(dest, exclude) { … }
Я предполагаю, что Ваша секунда "по линии" dest из входного файла, который содержит значения, которые Вы проверяете по исключенным значениям (например, называете этот входной файл "данными").
Можно читать в списке исключенных значений через другой файл (например, названный "исключают"). Если исключают, уже разграничен |
, просто используйте sed для изменения их на \n
.
Создайте тестовые файлы
sed 's/ /\n/g' <<<"blah1 blah2 abcde" >data
sed 's/|/\n/g' <<<"blah1|blah2|blah3" >exclude
Сценарий
awk '{
if( NR==FNR ) { exclude[$0]++
}else{
# somewhere later on
# "dest" to be tested is $1 of "data"
if( exclude[$1] ) print "do something", $1
}
}' exclude data
или что-то вроде этого для передачи этих 2 "файлов" может подойти.:
}' <(sed 's/|/\n/g' <<<"blah1|blah2|blah3") \
data
Вывод
do something blah1
do something blah2