感谢您的支持,我正在尝试从下面的日志示例中提取特定模式
03/-1/NO, LIMIT: 1:1=MISSING LIMIT - RECORD##AA23100TLD89-SCHEDULE-12345678. 1/12. 02/-1/NO, PROPERTY: 1: 1=MISSING AA. PROPERTY -
RECORD*| *PH0010002 | NEW | LENDING-TAKEOVER-ARRANGEMENT | 12345678|1234567891: : 0013978397|JAO:: JAF|HL. DOA| PHP | 20150910 | ACCOUNT: : OFFICERS: : LIMIT: : COMMITMENT:: PRINCIPALINT: : SCHEDULE: : XIMS I ::::::::3333 TALT. ID! TACCOUNT. REFERENCE! !L.GL. BRANCH! !L.BDO. PROD: : PRIMARY.OFFICER:: LIMIT: : AMOUNT! !MATURITY. DATE:: PERIODIC. INDEX! ! PERIODIC. RATE! !MARGIN.TYPE! !MARGIN.OPER! !MARGIN. RATE !!ACCRUAL. RULE! !DAY. BASIS! ! PERIODIC. PERIOD. TYPE! ! PERIODIC. PERIOD! ! INITIAL. RESET. DATE!! PERIODIC.RESET:: PAYMENT. TYPE:1:1!! PAYMENT .METHOD: 1:1! | PAYMENT .FREQ:1:11 | PROPERTY: 1:1! !START. DA TE: 1:11 1END. DATE: 1:11 | PAYMENT. TYPE: 2:1! ! PAYMENT. METHOD: 2: 1! | PAYMENT. FREQ:2:1! ! PROPERTY: 2:1!! START. DATE: 2:1! | END. DATE: 2:1! !ACTUAL.AMT: 2:1! | PAYMENT.TYPE:3:11 !PAYMENT.METHOD: 3:1!! PAYM ENT. FREQ: 3:11! PROPERTY: 3:1! | PROPERTY: 3:2! !START. DATE: 3:1! ! ACTUAL.AMT: 3:1:: EFF. INT. RATE: 1:1! |APL. AMOUNT: 1:1! !BSP. EMPLOYEE-CODE: 1:1! ! DEDUCTION. TYPE: 1:11|APL.DISCOUNT .RATE: 1: 1! |HOUSE.
我想要如下所示的输出。
LIMIT: 1:1=MISSING LIMIT -
RECORD
PROPERTY: 1: 1=MISSING AA.
PROPERTY -
RECORD
我尝试使用 AWK,但它有助于获得一半的输出,无法使用多个 RS。
[root@localhost ~]# awk 'BEGIN{RS="*"; FS="-1/NO,"}NF>1{print $NF}' log2
PROPERTY: 1: 1=MISSING AA. PROPERTY -
RECORD
[root@localhost ~]#
需要您对此的建议。
不清楚您想要使用哪些字符串作为
RS
或为什么换行符出现在输出的某些部分而不是其他部分,但也许其中之一就是您想要做的,或者至少会给您一个想法如何做你想做的事情,使用 GNU awk 进行多字符 RS
和 RT
:
$ awk 'BEGIN{RS="[#*]"} {$1=$1} sub(".*-1/NO, ","")' log2
LIMIT: 1:1=MISSING LIMIT - RECORD
PROPERTY: 1: 1=MISSING AA. PROPERTY - RECORD
$ awk 'BEGIN{RS="[#*]"} sub(".*-1/NO, ","")' log2
LIMIT: 1:1=MISSING LIMIT - RECORD
PROPERTY: 1: 1=MISSING AA. PROPERTY -
RECORD
$ awk 'BEGIN{RS="[#*]"} {$NF=ORS $NF} sub(".*-1/NO, ","")' log2
LIMIT: 1:1=MISSING LIMIT -
RECORD
PROPERTY: 1: 1=MISSING AA. PROPERTY -
RECORD
$ awk 'BEGIN{RS="RECORD"} {$NF=$NF " " RT} sub(".*-1/NO, ","")' log2
LIMIT: 1:1=MISSING LIMIT - RECORD
PROPERTY: 1: 1=MISSING AA. PROPERTY - RECORD
$ awk 'BEGIN{RS="RECORD"} {$0=$0 RT} sub(".*-1/NO, ","")' log2
LIMIT: 1:1=MISSING LIMIT - RECORD
PROPERTY: 1: 1=MISSING AA. PROPERTY -
RECORD
$ awk 'BEGIN{RS="RECORD"} {$NF=$NF ORS RT} sub(".*-1/NO, ","")' log2
LIMIT: 1:1=MISSING LIMIT -
RECORD
PROPERTY: 1: 1=MISSING AA. PROPERTY -
RECORD
当然,还有很多其他的可能性。