Команда не найдена, но работает с sudo

Для этого можно использовать awk:

Предполагая, что Trn-statusвсегда предшествуетTECHNICAL EXCEPTION

awk  -F'[\;\=]' '
    { if ( $0 ~ /Trn-status: INCOMPLETE/ ) checkid[$2]=$2 ;
      if ( $2 == checkid[$2] ) {
         if ( $0 ~ /TECHNICAL EXCEPTION/ ) print checkid[$2]
      }
    }' logfile

Пояснение:

  • -F'[\;\=]'используйте либо ;, либо =в качестве разделителей полей; использование квадратных скобок позволяет вам определить несколько разделителей полей, точка с запятой и знак равенства являются специальными символами для awk, поэтому вам нужно экранировать их обратной косой чертой
  • первая строка:$0представляет собой всю строку, ~представляет собой (подчиненный )оператор сопоставления с образцом и /PATTERN/строку поиска. Поэтому, если мы находим Trn-status: INCOMPLETEв строке, мы сохраняем поле ID (номер два, разделенное ;и =от других полей )в массиве checkid, где индекс — это имя Сам ID(awkпозволяет использовать строки в качестве индексных счетчиков)
  • вторая строка :если мы найдем ID в другой строке...
  • третья строка :проверить наличие TECHNICAL EXCEPTIONи распечатать идентификатор, если да
  • (logfileимя вашего файла)
0
12.08.2021, 17:07
0 ответов

Теги

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