Seu script tem vários problemas:
- Ele testa se algum campo corresponde a "A" e
- Está procurando
H
, quando não importa seH
aparece ou não - Ele está procurando por
H
em$1
(o primeiro campo), sempre que o ciclo é - O resultado de todos esses testes não faz diferença: o teste
if
não tem ação correspondente. Oprint
é sempre alcançado para cada linha.
Para rastrear se A e B estão presentes na mesma linha (em campos diferentes), você poderia usar uma variável para cada:
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
}