Chinaunix
标题:
问一个关于提取字段的问题
[打印本页]
作者:
d_jacky
时间:
2010-02-11 18:17
标题:
问一个关于提取字段的问题
原始文件如下:
70 CDR GATEIN={
RecordType=0(GATEIN)
sequenceNumber=8926309
callingNumber{
AddInd=H'2
NumPlan=H'1
ISDN=13896551373
}
calledNumber{
AddInd=H'4
NumPlan=H'1
ISDN=15310118256
}
mscNumber{
AddInd=H'1
NumPlan=H'6
ISDN=460030934026100
}
incomingTKGP=1153
outgoingTKGP=1041
inTrunkGpModule=7
outTrunkGpModule=0
timeForSeizeChannel=2010-02-11 13:58:59
timeForAnswer=2010-02-11 13:59:05
timeForRelease=2010-02-11 13:59:59
callDuration=54(seconds)
partialOutputRecNum=0
lastPartialOutput(The last CDR)
callReference{
Module=7
SequenceNo=1409514
}
causeForTermination=0(Normal Release)
diagnostics=H'0102
chargedParty=0(Originator Charged)
IsPulseChargeSup=0
}
--------------------------------------------------------------------------------
71 CDR GATEOUT={
RecordType=1(GATEOUT)
sequenceNumber=8926310
callingNumber{
AddInd=H'2
NumPlan=H'1
ISDN=13340393562
}
calledNumber{
AddInd=H'2
NumPlan=H'1
ISDN=1502359285111
}
mscNumber{
AddInd=H'1
NumPlan=H'6
ISDN=460039340261002222
}
incomingTKGP=1041
outgoingTKGP=1153
inTrunkGpModule=0
outTrunkGpModule=7
timeForSeizeChannel=2010-02-11 13:58:54
timeForAnswer=2010-02-11 13:59:09
timeForRelease=2010-02-11 13:59:59
callDuration=50(seconds)
partialOutputRecNum=0
lastPartialOutput(The last CDR)
callReference{
Module=22
SequenceNo=214829
}
causeForTermination=0(Normal Release)
diagnostics=H'0102
chargedParty=0(Originator Charged)
IsPulseChargeSup=0
}
--------------------------------------------------------------------------------
71 CDR GATEOUT={
RecordType=1(GATEOUT)
sequenceNumber=8926498
callingNumber{
AddInd=H'1
NumPlan=H'1
ISDN=008613114001808111
}
calledNumber{
AddInd=H'2
NumPlan=H'1
ISDN=138963421113331
}
mscNumber{
AddInd=H'1
NumPlan=H'6
ISDN=460030934111026100
}
incomingTKGP=1041
outgoingTKGP=1164
inTrunkGpModule=0
outTrunkGpModule=14
timeForSeizeChannel=2010-02-11 13:59:02
timeForAnswer=2010-02-11 13:59:23
timeForRelease=2010-02-11 14:00:03
callDuration=40(seconds)
partialOutputRecNum=0
lastPartialOutput(The last CDR)
callReference{
Module=23
SequenceNo=213924
}
causeForTermination=0(Normal Release)
diagnostics=H'0000
chargedParty=0(Originator Charged)
IsPulseChargeSup=0
RedirNumber{
AddInd=H'1
NumPlan=H'1
ISDN=8613370789688
}
}
--------------------------------------------------------------------------------
如何提取CDR GATEOUT里面的callingNumber,谢谢,
作者:
d_jacky
时间:
2010-02-11 18:32
请各位帮忙一下,有点急,谢谢了
作者:
709101040516
时间:
2010-02-11 18:36
本帖最后由 709101040516 于 2010-02-11 18:38 编辑
awk '/callingNumber\{/,/calledNumber\{/{print}' URFILE|grep -v 'calledNumber{'
复制代码
作者:
709101040516
时间:
2010-02-11 18:37
回复
2#
d_jacky
弄好了,这么急啊!
作者:
d_jacky
时间:
2010-02-11 18:41
这个好像不行哦,我要求的是
71 CDR GATEOUT={
RecordType=1(GATEOUT)
sequenceNumber=8926310
callingNumber{
AddInd=H'2
NumPlan=H'1
ISDN=13340393562
}
calledNumber{
AddInd=H'2
NumPlan=H'1
ISDN=1502359285111
}
mscNumber{
AddInd=H'1
NumPlan=H'6
ISDN=460039340261002222
}
incomingTKGP=1041
outgoingTKGP=1153
inTrunkGpModule=0
outTrunkGpModule=7
timeForSeizeChannel=2010-02-11 13:58:54
timeForAnswer=2010-02-11 13:59:09
timeForRelease=2010-02-11 13:59:59
callDuration=50(seconds)
partialOutputRecNum=0
lastPartialOutput(The last CDR)
callReference{
Module=22
SequenceNo=214829
}
causeForTermination=0(Normal Release)
diagnostics=H'0102
chargedParty=0(Originator Charged)
IsPulseChargeSup=0
}
里面的callingNumber,你的会不会把所有的callingNumber都取出来了
作者:
709101040516
时间:
2010-02-11 18:48
[18:09:19 pana ~ 3.2]#awk '/callingNumber\{/,/calledNumber\{/{print}' 33|grep -v 'calledNumber{'
callingNumber{
AddInd=H'2
NumPlan=H'1
ISDN=13896551373
}
callingNumber{
AddInd=H'2
NumPlan=H'1
ISDN=13340393562
}
callingNumber{
AddInd=H'1
NumPlan=H'1
ISDN=008613114001808111
}
复制代码
这样不对吗??你不是要这样的结果吗?
作者:
709101040516
时间:
2010-02-11 18:49
你直接说清楚你想要的结果
作者:
d_jacky
时间:
2010-02-11 18:52
是这个:
calledNumber{
AddInd=H'4
NumPlan=H'1
ISDN=15310118256
}
是71 CDR GATEOUT={}大结构里面的calledNumber
作者:
709101040516
时间:
2010-02-11 18:59
你这里面有2个 71 CDR
作者:
709101040516
时间:
2010-02-11 19:02
本帖最后由 709101040516 于 2010-02-11 19:11 编辑
暂时写了个很傻逼的
awk '/71\ CDR\ GATEOUT=\{/,/mscNumber\{/{print}' 33| awk '/calledNumber\{/,/mscNumber\{/{print}'|grep -v 'mscNumber{'
复制代码
作者:
709101040516
时间:
2010-02-11 19:14
还有一个
grep '71 CDR GATEOUT={' -A 13 URFILE|grep 'mscNumber{' -B 5
复制代码
作者:
ywlscpl
时间:
2010-02-11 19:19
awk -F '\n' -v RS='----+\n' '$1~/CDR GATEOUT/{for (i=1;i<=NF;i++){if (T&&$i~/}/) {print $i;T=0}if ($i~/callingNumber/) T=1;if (T) print $i}}' file
复制代码
作者:
ywlscpl
时间:
2010-02-11 19:24
怎么到了8楼又变需求了
作者:
709101040516
时间:
2010-02-11 19:30
回复
13#
ywlscpl
你才知道啊,客户需求变化快!
作者:
709101040516
时间:
2010-02-11 19:31
本帖最后由 709101040516 于 2010-02-11 20:04 编辑
回复
13#
ywlscpl
问个问题,awk '{for(NR==1,NR==3)print}' FILE, 有错误,是,错了吗?
估计就没有这种写法。。。
作者:
709101040516
时间:
2010-02-11 19:55
本帖最后由 709101040516 于 2010-02-11 20:05 编辑
回复
13#
ywlscpl
不拉布拉不拉布拉
作者:
iori809
时间:
2010-02-11 20:30
sed -n '/calledNumber{/,/\}/p' file
作者:
709101040516
时间:
2010-02-12 08:02
回复
17#
iori809
你完全没理解楼主的意思。。
作者:
iori809
时间:
2010-02-12 08:04
回复
18#
709101040516
呵呵~我发完以后也觉得是不是太简单了~ 不过LZ的需求老是改变啊
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2