Я бы посоветовал комбинацию grep
и awk
:
Вы можете использовать grep -n
, чтобы получить строки, содержащие «ORA-00942», вы получите что-то вроде:
2:line_2 contains ORA-00942
8:line_5 contains ORA-00942
Отсюда, используя awk
с ':' в качестве разделителя полей, вы можете получить номера строк, которые содержат «ORA-00942» ([2,8]
).
Вы можете затем используйте grep -n
, чтобы упорядочить строки, содержащие «UTL_RECOMP_SLAVE_75», что может выглядеть примерно так:
4:line_4 contains UTL_RECOMP_SLAVE_75
7:line_7 contains UTL_RECOMP_SLAVE_75
Используя awk
снова, вы получите номера строк, которые содержат «UTL_RECOMP_SLAVE_75» ([4,7]
) .
Отсюда вы обрабатываете оба списка номеров строк, чтобы получить совпадающие.
Советы и хитрости : вместо сохранения строк, содержащих "UTL_RECOMP_SLAVE_75" , вы берете номера строк плюс один (вместо [4,7]
у вас есть [5,8]
), может оказаться проще найти два списка с одинаковыми номерами, чем проверять значения «плюс один».