Выход там также подтверждает, что вы правы.[117399]
Раствор Perl:
perl -ne '$id = "6d87de8e-1276-4496-b49d-dd4cd375cbe4";
print if $match = (/IDA:$id/ .. /IDA:(?!$id)/)
and $match !~ /E0$/
' *.log
Объяснение:
/ Regex1 /. / Regex2 /
возвращает true для строк между матчами. IDA: (?! $ ID)
означает IDA:
не соответствует на $ id. E0
, которое проверяет условия, поэтому последняя строка (одна с другой IDA) не печатается. Чтобы включить имена файлов и номера строк, используйте
print "$ARGV:$.:$_"
и добавьте следующее перед закрытием цитата:
; $. = 0 if eof
Это печатает соответствующие данные (каждый из которых предшествует номер строки) Для файлов, названных в качестве IDA:
awk 'match($0,/IDA:[^ ]+/) { print NR, $0 > substr($0,RSTART+4,RLENGTH-4) }' logfile
SED
.
SED
.
SED
.
SED
:
sed -n ':2;/IDA:6d87de8/{p;/exception/{:1;n;/IDA:/!{p;b1};b2}}'
Вывод Scrpt Suppres ( -N
-N), до тех пор, пока не соответствует соответствующей IDA ( / IDA: 6D87DE8 /
), который будет напечатан ( p
). Затем Pattern (Line) будет проверяться на присутствие «Exption» и, если это, начнет работать с следующей строкой ( N
). Если следующая строка не состоит IDA:
Линия будет напечатана, и скрипт переходит к следующей строке (цикл начался в : 1
точка). Если линия CoSist IDA:
Сценарий начинается с начала (цикл на уровне : 2
: 2 точка)
Если вы хотите перечислить линии - выходные линии NL
или grep -n ". *"
и труба его к скрипту
.