compgen и SELinux

У вашего скрипта есть несколько проблем:

  • Он проверяет, соответствует ли какое-либо поле одновременно "A"и "B". Пока поля состоят только из одного символа (поэтому вы не можете получить "AB", "BAA" и т.д.), это никогда не будет правдой.
  • Он ищет 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
}
1
01.10.2017, 13:51
0 ответов

Теги

Похожие вопросы