我希望提取以“脚本:main,SIB:orvault/inap/si8/begin,“并以第一次出现结束”-----------------------------------------------------------------“
我尝试过的代码
sed -n -e '/SCRIPT:main, SIB:orvault\/inap\/si8\/begin,/,/-----------------------------------------------------------------/p' trace.log > operation.log
问题是当文本模式出现多次时,例如在下面的 Trace.log 中出现了两次“脚本:main,SIB:orvault/inap/si8/begin,“ 和 ”-----------------------------------------------------------------“在 trace.log 中。上面的代码获取模式开始出现之间的文本“脚本:m……”到模式的结束出现“----------……”。
我应该如何进行下一步,请提出建议,因为读取文件不是一种选择。
输入Trace.log
State[9] 1001010 , SCRIPT:main, SIB:orvault/inap/si8/begin,nParam=71
38 09:44:06......... script.cxx.1232: SIB input
38 09:44:06......... script.cxx.1250: stopstats(conte
38 09:44:06......... script.cxx.1496: Calling SIB orv
38 09:44:06......... begin.cxx.73: TEL-
serviceKey 10,
calledPartyNumber -- void --,
,
callingPartyNumber '84
,
callingPartys'0
iPSSPCapabilit-,
iPAvailable -- void --,
,
locationNumber '03
,
extensions {
38 09:44:06......... script.cxx.785: -----------------------------------------------------------------
38 09:44:06......... begin.cxx.112: TELKOM:SINAP Forward Call Indicators copied in context.
38 09:44:06......... begin.cxx.146: TELKOM:SINAP Calling Party Number copied in context.
38 09:44:06......... begin.cxx.156: Called Party BCD Number copied in context
38 09:44:06......... begin.cxx.169: TELKOM:SINAP Calling Partys Category copied in context.
38 09:44:06......... begin.cxx.193: LOCATION NUMBER NATURE OF ADDRESS IS: 3
38 09:44:06......... begin.cxx.244: TELKOM:SINAP Location Number copied in context.
38 09:44:06......... begin.cxx.249: initial location number is 216F7480553535
38 09:44:06......... begin.cxx.263: LAI=216F7480553535
38 09:44:06......... begin.cxx.267: here1216F7480553535
38 09:44:06......... begin.cxx.283: intLAC:32853
38 09:44:06......... begin.cxx.290: intCID:13621
38 09:44:06......... begin.cxx.295: MCC=12F
38 09:44:06......... begin.cxx.296: MNC=47
38 09:44:06......... begin.cxx.297: LAC=32853
State[9] 1001010 , SCRIPT:main, SIB:orvault/inap/si8/begin,nParam=71
38 09:44:06......... script.cxx.1617: cld(context.cld) =
38 09:44:06......... script.cxx.1617: cld_bcd(context.cld_bcd) = 1612
38 09:44:06......... script.cxx.1617: cld_bcd_nat(context.cld_bcd_nat) = 0
38 09:44:06......... script.cxx.1617: cld_bcd_plan(context.cld_bcd_plan) = 9
38 09:44:06......... script.cxx.1617: cld_inn(context.inn_cld) = 4294967295
38 09:44:06......... script.cxx.1617: cld_nat(context.nat_cld) = 4294967295
38 09:44:06......... script.cxx.1617: cld_plan(context.plan_cld) = 4294967295
38 09:44:06......... script.cxx.785: -----------------------------------------------------------------
38 09:44:06......... script.cxx.1617: cld_nat(context.nat_cld) = 23
38 09:44:06......... script.cxx.1617: cld_plan(context.plan_cld) = 56
答案1
使用 Sed,使用 /q 在第一个匹配后停止。
这似乎是一个此问题在 U&L 上重复它也有各种其他解决方案。