GNU awk:
awk 'ENDFILE { if(NR==FNR) print } NR!=FNR' infile{,}
Портативный awk:
awk 'NR!=FNR && !f { f=1; print p } NR!=FNR; { p=$0 }' infile{,}
Если ошибка всегда имеет один и тот же вывод, например, ПРЕДУПРЕЖДЕНИЕ имеет 6 строк, а ТЯЖЕЛАЯ — 8 строк, вы можете сделать что-то вроде следующего. Это не чистый ужин, но это даст некоторые результаты, которые вы ищете.
grep -A5 "WARNING" report > warnings.txt
grep -A8 "SEVER" report > errors.txt
предупреждения.txt
root@srva ~]# cat warnings.txt
WARNING: no localized text available for:
ErrorCode : InvalidStateTransition
BundleName: CommonDomain_ErrorDictionary
Locale : en_US
Reason : XMlResourceException: ResourceBundleManager: Can not find resource bundle 'CommonDomain_ErrorDictionary'
РЯа. 19, 2021 4:14:16 PM com.lhs.FrameworkExtension.bscs_core.d getErrorMessage
WARNING: no localized text available for:
ErrorCode : InvalidStateTransition
BundleName: CommonDomain_ErrorDictionary
Locale : en_US
Reason : XMlResourceException: ResourceBundleManager: Can not find resource bundle 'CommonDomain_ErrorDictionary'
РЯа. 19, 2021 4:15:42 PM com.lhs.ccb.sfw.application.ServiceObjectImpl executeLocaleI
--
WARNING: no localized text available for:
ErrorCode : InvalidStateTransition
BundleName: CommonDomain_ErrorDictionary
Locale : en_US
Reason : XMlResourceException: ResourceBundleManager: Can not find resource bundle 'CommonDomain_ErrorDictionary'
РЯа. 19, 2021 4:15:42 PM com.lhs.FrameworkExtension.bscs_core.d getErrorMessage
ошибки.txt
[root@srva ~]# cat errors.txt
SEVERE: ServiceObjectI.executeLocaleI CONTRACT.WRITE
Error code: CommonDomain.InvalidStateTransition
at com.lhs.ccb.sfw.application.ServiceObjectImpl.execute(Unknown Source)
at com.lhs.cil.core.AggregatedServiceObjectImpl.execute(Unknown Source)
at com.lhs.ccb.sfw.application.ServiceObjectImpl.executeLocaleI(Unknown Source)
at com.lhs.cil.core.AggregatedServiceObjectImpl.executeLocaleI(Unknown Source)
at com.lhs.ccb.soi.ServiceObjectIPOA._invoke(Unknown Source)
--
SEVERE: ServiceObjectI.executeLocaleI CONTRACT.WRITE
Ваш входной файл в том виде, в котором он был первоначально опубликован, имеет вид:
$cat input.txt
Error code: CommonDomain.InvalidStateTransition
at com.lhs.ccb.sfw.application.ServiceObjectImpl.execute(Unknown Source)
at com.lhs.cil.core.AggregatedServiceObjectImpl.execute(Unknown Source)
at com.lhs.ccb.soi.ServiceObjectIPOA._invoke(Unknown Source)
РЯа. 19, 2021 4:14:16 PM com.lhs.FrameworkExtension.bscs_core.d getErrorMessage
WARNING: no localized text available for:
ErrorCode : InvalidStateTransition
BundleName: CommonDomain_ErrorDictionary
Locale : en_US
Reason : XMlResourceException: ResourceBundleManager: Can not find resource bundle 'CommonDomain_ErrorDictionary'
РЯа. 19, 2021 4:14:16 PM com.lhs.FrameworkExtension.bscs_core.d getErrorMessage
WARNING: no localized text available for:
ErrorCode : InvalidStateTransition
BundleName: CommonDomain_ErrorDictionary
Locale : en_US
Reason : XMlResourceException: ResourceBundleManager: Can not find resource bundle 'CommonDomain_ErrorDictionary'
РЯа. 19, 2021 4:15:42 PM com.lhs.ccb.sfw.application.ServiceObjectImpl executeLocaleI
SEVERE: ServiceObjectI.executeLocaleI CONTRACT.WRITE
Error code: CommonDomain.InvalidStateTransition
at com.lhs.ccb.sfw.application.ServiceObjectImpl.execute(Unknown Source)
at com.lhs.cil.core.AggregatedServiceObjectImpl.execute(Unknown Source)
at com.lhs.ccb.sfw.application.ServiceObjectImpl.executeLocaleI(Unknown Source)
at com.lhs.cil.core.AggregatedServiceObjectImpl.executeLocaleI(Unknown Source)
at com.lhs.ccb.soi.ServiceObjectIPOA._invoke(Unknown Source)
РЯа. 19, 2021 4:15:42 PM com.lhs.FrameworkExtension.bscs_core.d getErrorMessage
WARNING: no localized text available for:
ErrorCode : InvalidStateTransition
BundleName: CommonDomain_ErrorDictionary
Locale : en_US
Reason : XMlResourceException: ResourceBundleManager: Can not find resource bundle 'CommonDomain_ErrorDictionary'
РЯа. 19, 2021 4:15:42 PM com.lhs.FrameworkExtension.bscs_core.d getErrorMessage
WARNING: no localized text available for:
ErrorCode : InvalidStateTransition
BundleName: CommonDomain_ErrorDictionary
Locale : en_US
Reason : XMlResourceException: ResourceBundleManager: Can not find resource bundle 'CommonDomain_ErrorDictionary'
РЯа. 19, 2021 4:17:19 PM com.lhs.ccb.sfw.application.ServiceObjectImpl executeLocaleI
SEVERE: ServiceObjectI.executeLocaleI CONTRACT.WRITE
Попробуйте это:
$ awk 'BEGIN{FS=":";wflag=0;sflag=0} /^WARNING:|^SEVERE:/ {if ($1=="SEVERE") {sflag=1;print > "severe.txt";next;} else {wflag=1;print > "warning.txt";next;}} /^WARNING:|^SEVERE:/ {wflag=0; sflag=0; if ($1=="SEVERE") {print > "severe.txt";} else {print > "warning.txt";}} {if (sflag) {print > "severe.txt";}} {if (wflag) {print > "warning.txt";}}' input.txt
, где input.txt
— это текстовый файл, в который записывается вся ваша информация. Вывод направляется либо на severe.txt
, либо на warning.txt
. Чтобы визуализировать содержимое этого файла, выполните:
$ cat {severe,warning}.txt
Вы можете написать этот -лайнер как awk
скрипт, чтобы сделать его более читабельным:
$ cat awk_script
#! /usr/bin/awk
BEGIN {FS=":"; wflag=0; sflag=0}
/^WARNING:|^SEVERE:/ {
if ($1=="SEVERE") {
sflag=1; print > "severe.txt";next;}
else {
wflag=1; print > "warning.txt";next;}
}
/^WARNING:|^SEVERE:/ {
wflag=0; sflag=0;
if ($1=="SEVERE") {
print > "severe.txt";}
else {
print > "warning.txt";}
}
{if (sflag) {print > "severe.txt";}}
{if (wflag) {print >"warning.txt";}}
Чтобы запустить скрипт, просто введите в терминале следующее:
$ awk -f awk_script input.txt