本帖最后由 metaxing 于 2010-07-15 14:45 编辑
首先我是在windows下用类似DOS批处理的形式执行的,比如脚本文件名rnc.cmd,内容如下
!D:/Program/perl/perl -w
perl -ne "print if /^ADD CELLSETUP/" <CFGMML-A.TXT>; CELLSETUP.CSV
perl -nle "BEGIN{$,=',';print 'CELLID, CELLNAME, CNOPINDEX, MAXTXPOWER, BANDIND, UARFCNUPLINKIND, UARFCNUPLINK'}print $1,$2,$3,$4,$5,$6,$7 if /^ADD CELLSETUP:\w+=(.*),\s*\w+=(.*),\s*\w+=(.*),\s*\w+=(.*),\s*\w+=(.*),\s*\w+=(.*),\s*\w+=(.*);/" <CFGMML-A.TXT>; CELLSETUP2.CSV
perl -nle "BEGIN{$,=',';print 'RNC,CELLID,CELLNAME,CNOPINDEX,MAXTXPOWER,BANDIND,UARFCNUPLINKIND,UARFCNUPLINK,UARFCNDOWNLINK,TCELL,NINSYNCIND,NOUTSYNCIND,TRLFAILURE,PSCRAMBCODE,TXDIVERSITYIND,SPGID,NODEBNAME,LOCELL,LAC,SAC,CFGRACIND,RAC,CLTAMODEIND,CIO'};print 'GARNC1A', /=(.*?)[,;]/g if /^ADD CELLSETUP/" <CFGMML-A.TXT>; CELLSETUP3.CSV
第一行perl执行如期所欲,一切OK
第二行perl执行结果如下:
CELLID, CELLNAME, CNOPINDEX, MAXTXPOWER, BANDIND, UARFCNUPLINKIND, UARFCNUPLINK
11, CELLNAME="AAAAA-1", CNOPINDEX=0, MAXTXPOWER=430, BANDIND=BAND1, UARFCNUPLINKIND=TRUE, UARFCNUPLINK=9763
与您在dos提示符下的结果有出入,不知何故
第三行perl脚本照楼上示例稍加改变执行结果已经非常完美,结果成这样:
RNC,CELLID,CELLNAME,CNOPINDEX,MAXTXPOWER,BANDIND,UARFCNUPLINKIND,UARFCNUPLINK,UARFCNDOWNLINK,TCELL,NINSYNCIND,NOUTSYNCIND,TRLFAILURE,PSCRAMBCODE,TXDIVERSITYIND,SPGID,NODEBNAME,LOCELL,LAC,SAC,CFGRACIND,RAC,CLTAMODEIND,CIO
GARNC1A,11,"AAAAA-1",0,430,BAND1,TRUE,9763,10713,CHIP0,5,50,50,264,FALSE,1,"AAAAA",0,H'F183,H'000B,REQUIRE,H'01,FALSE,0
但是我还有一个原文件需要同样转换后追加到前一步生成结果的后面,这次不要标题行了,我写如下脚本
perl -nle "BEGIN{$,=',';print 'GARNC1B', /=(.*?)[,;]/g if /^ADD CELLSETUP:/" <CFGMML-B.TXT>; >>CELLSETUP.CSV
但是执行没有追加任何信息,错误何在? |