У вашего скрипта есть несколько проблем:
H
, когда не имеет значения, появляется ли H
или нетH
в $1
(первое поле), каждый раз в циклеif
не имеет никакого действия. Тест print
достигается всегда, для каждой строки. Чтобы отследить, присутствуют ли A и B в одной строке (в разных полях), можно использовать переменную для каждой:
NR>1 {
#beginning of line - no As or Bs seen yet
A=0
B=0
#looping over all fields except the first two
#break as soon as both A and B found
for(i=3; A*B == 0 && i<=NF; i++) {
if ( $i ~ "A" ) A=1
if ( $i ~ "B" ) B=1
}
#print line if A and B were found
if (A && B) print
}