grep для определенного шаблона в строке в файле и вывод строки, если совпадение найдено в той же строке

У меня есть файл, который позволяет сказать temp.log со следующим содержимым-

blahblah SomeOtherClassName blahblahblah
blahblah MyClassName blah blah blah userId:[6729223726254951za],key:[09809890980980908d0e6],token:[0238234234-3948-4d9],SessionScope:[0238234234-3948-4d9],PageScope:[0238234234-3948-4d9],RequestScope:[0238234234-3948-4d9], requestUrl:/blah/blah/blah
blahblah SomeOtherClassName blahblahblah
blahblah MyClassName blah blah blah userId:[6729223726254951za],key:[09809890980980908d0e6],token:[0238234234-3948-4d9],SessionScope:[1111111-3948-4d9],PageScope:[0238234234-3948-4d9],RequestScope:[0238234234-3948-4d9], requestUrl:/blah/blah/blah

Я хочу проанализировать файл журнала и выводить, если строка журнала, которая имеет MyClassName, и если одно из значений sessioncope, pagescope или requestscope не соответствует значению токена. Например, в моем примере строки 2 и 4 имеют MyClassName, а в двух строках 4 значение SessionScope отличается от токена, поэтому должна быть выведена строка 4. Я борюсь с параметрами grep и backreference.

-1
21.06.2017, 20:03
2 ответа

гавкрешение:

awk -v FPAT='\\[[^][[:space:]]+\\]' 'NF>5 && ($3!=$4 || $3!=$5 || $3!=$6){ print $0 }' logfile

Выход:

blahblah MyClassName blah blah blah userId:[6729223726254951za],key:[09809890980980908d0e6],token:[0238234234-3948-4d9],SessionScope:[1111111-3948-4d9],PageScope:[0238234234-3948-4d9],RequestScope:[0238234234-3948-4d9], requestUrl:/blah/blah/blah

Детали:

  • -v FPAT='\\[[^][[:space:]]+\\]'-значение поля определения шаблона (например.[0238234234-3948-4d9])

  • ($3!=$4 || $3!=$5 || $3!=$6)-если какой-либо из ключевых ключей не соответствует значению токена$3

0
28.01.2020, 05:12

Захватите токен в группу, а затем протестируйте его, используя обратные ссылки:

$ grep 'MyClassName' log | 
  grep -vE 'token:(\[[[:xdigit:]-]+\]),SessionScope:\1,PageScope:\1,RequestScope:\1'
blahblah MyClassName blah blah blah userId:[6729223726254951za],key:[09809890980980908d0e6],token:[0238234234-3948-4d9],SessionScope:[1111111-3948-4d9],PageScope:[0238234234-3948-4d9],RequestScope:[0238234234-3948-4d9], requestUrl:/blah/blah/blah
0
28.01.2020, 05:12

Теги

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