免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6183 | 回复: 10
打印 上一主题 下一主题

请问从log中用perl提取power和evm有效数据,然后根据筛选的生成excel格式数据 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-05-20 11:04 |只看该作者 |倒序浏览
本帖最后由 huafeng273 于 2013-05-20 15:44 编辑

各位大侠:
    小弟刚开始学习perl语言,有个项目比较紧急,通过perl语言从附件log中l提取power和evm数据;然后生成excel表格数据,请问怎么实现?

谢谢!

提取有效数据如下:
5GHz Power Accuracy

frequency      rate   txchain    target      temp  meas pwr     delta   2.0dB   1.5dB   1.0dB
     5785         6         1      20.0       127      18.8      -1.2      ok      ok     nok
      5785        54         1      20.0       127      19.1      -0.9      ok      ok      ok
     5785        t7         1      20.0       127      19.1      -0.9      ok      ok      ok
       5785        f7         1      18.0       127      17.2      -0.8      ok      ok      ok
      5785         6         2      20.0       128      19.2      -0.8      ok      ok      ok
       5785        54         2      20.0       128      19.4      -0.6      ok      ok      ok
       5785        t7         2      20.0       128      19.4      -0.6      ok      ok      ok
      5785        f7         2      18.0       127      16.9      -1.1      ok      ok     nok


5GHz EVM Accuracy with chain power

freq      rate   txchain    target      temp  meas pwr  meas_EVM  EVMLimit evmP/F     delta   1.2dB
5180        t7         1      20.0       126      19.3     -29.7     -22.7     ok      -0.7      ok
5180        f7         1      18.0       127      18.0     -32.3     -22.7     ok       0.0      ok
  5500        t7         1      20.0       127      19.6     -33.5     -22.7     ok      -0.4      ok
  5500        f7         1      18.0       127      17.8     -35.4     -22.7     ok      -0.2      ok
  5785        t7         1      20.0       127      18.9     -33.8     -22.7     ok      -1.1      ok
  5785        f7         1      18.0       126      17.3     -34.6     -22.7     ok      -0.7      ok

Power_EVM_PASS.rar

10.37 KB, 下载次数: 15

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
2 [报告]
发表于 2013-05-20 15:13 |只看该作者
不明白

论坛徽章:
0
3 [报告]
发表于 2013-05-20 15:40 |只看该作者
谢谢您的关注,我的意思从附件中提取上面列出的有效数据,然后生成excel文档形式保存在linux系统中。回复 2# rubyish


   

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
4 [报告]
发表于 2013-05-20 17:33 |只看该作者
从附件log中l提取power和evm数据:
  1. #!/usr/bin/perl
  2. use 5.016;
  3. my ( $ok, $now, @wanted );
  4. my $key = join( '\s', qw{5GHz Power Accuracy} ) . '|'
  5.   . join( '\s', qw{5GHz EVM Accuracy with chain power} );

  6. open my $data, 'Power_EVM_PASS.txt';

  7. while (<$data>) {
  8.     if ($ok) {
  9.         s/^(?:\S+\s+){2}//;
  10.         /-{10}/ ? $ok = 0 : push @{ $wanted[$now] }, $_;
  11.     }
  12.     elsif (/^(?:\S+\s+){2}($key)\r?\n/) {
  13.         $ok = 1;
  14.         $now = $1 =~ /EVM/ ? 1 : 0;
  15.         last if $wanted[$now];
  16.     }
  17. }

  18. say @$_ for @wanted;
复制代码
  1. frequency      rate   txchain    target      temp  meas pwr     delta   2.0dB   1.5dB   1.0dB
  2. 5785         6         1      20.0       127      18.8      -1.2      ok      ok     nok
  3. 5785        54         1      20.0       127      19.1      -0.9      ok      ok      ok
  4. 5785        t7         1      20.0       127      19.1      -0.9      ok      ok      ok
  5. 5785        f7         1      18.0       127      17.2      -0.8      ok      ok      ok
  6. 5785         6         2      20.0       128      19.2      -0.8      ok      ok      ok
  7. 5785        54         2      20.0       128      19.4      -0.6      ok      ok      ok
  8. 5785        t7         2      20.0       128      19.4      -0.6      ok      ok      ok
  9. 5785        f7         2      18.0       127      16.9      -1.1      ok      ok     nok

  10. freq      rate   txchain    target      temp  meas pwr  meas_EVM  EVMLimit evmP/F     delta   1.2dB
  11. 5180        t7         1      20.0       126      19.3     -29.7     -22.7     ok      -0.7      ok
  12. 5180        f7         1      18.0       127      18.0     -32.3     -22.7     ok       0.0      ok
  13. 5500        t7         1      20.0       127      19.6     -33.5     -22.7     ok      -0.4      ok
  14. 5500        f7         1      18.0       127      17.8     -35.4     -22.7     ok      -0.2      ok
  15. 5785        t7         1      20.0       127      18.9     -33.8     -22.7     ok      -1.1      ok
  16. 5785        f7         1      18.0       126      17.3     -34.6     -22.7     ok      -0.7      ok
复制代码
生成excel表格数据,请问各位大侠怎么实现?

论坛徽章:
0
5 [报告]
发表于 2013-05-20 18:29 |只看该作者
谢谢高手的指教!回复 4# rubyish


   

论坛徽章:
0
6 [报告]
发表于 2013-05-20 21:51 |只看该作者
为何不直接使用shell的cut提取某一列呢? excel数据是不是指表格数据?Tab隔开?

论坛徽章:
0
7 [报告]
发表于 2013-07-03 19:57 |只看该作者
use Spreadsheet::WriteExcel

论坛徽章:
0
8 [报告]
发表于 2013-10-16 11:06 |只看该作者
由于在特殊应用场景下,不能调用这种接口回复 7# luj914


   

论坛徽章:
0
9 [报告]
发表于 2013-10-18 11:56 |只看该作者
回复 1# huafeng273
  1. #!/usr/bin/perl

  2. open(XLS,">test.xls");
  3. open(TXT,"<Power_EVM_PASS.txt");
  4. while(<TXT>){
  5.   print XLS if s/^(:?\d+\s+INFO\s+)(5GHz Power Accuracy)$/$2/;
  6.   print XLS if s/^(:?\d+\s+INFO\s+)(5GHz EVM Accuracy with chain power)/$2/;
  7.   if( s/^(:?\d+\s+INFO\s+)(freq      rate   txchain    target      temp  meas pwr  meas_EVM  EVMLimit evmP\/F     delta   1.2dB)/$2/){
  8.   s/(\s+)/\t/g;
  9.   print XLS $_."\n";
  10.   };

  11. if (s/^(:?\d+\s+INFO\s+)(frequency      rate   txchain    target      temp  meas pwr     delta   2.0dB   1.5dB   1.0dB)/$2/){
  12.   s/(\s+)/\t/g;
  13.   print XLS $_."\n";
  14.   };
  15. if (s/^(:?\d+\s+INFO\s+)((:?\S+\s+){8,}.*ok$)/$2/){
  16.   s/(\s+)/\t/g;
  17.   print XLS $_."\n";
  18.   }
  19. }
  20. close XLS;
  21. close TXT;
复制代码
看我这个行不! 我试了下 已经可以了!!!!!!!1
   

论坛徽章:
0
10 [报告]
发表于 2013-10-18 13:50 |只看该作者
本帖最后由 ghoull 于 2013-10-19 15:48 编辑
  1. #!/usr/bin/perl

  2. my @wanted;

  3. push @{ $wanted[0] },"5GHz Power Accuracy\n","frequency\trate\ttxchain\ttarget\ttemp\tmeas pwr\tdelta\t2.0dB\t1.5dB\t1.0dB\n";
  4. push @{ $wanted[1] },"5GHz EVM Accuracy with chain power\n","freq\trate\ttxchain\ttarget\ttemp\tmeas pwr\tmeas_EVM\tEVMLimit\tevmP/F\tdelta\t1.2dB\n";

  5. open my $data, 'Power_EVM_PASS.txt';
  6. open (XLS,">test.xls");

  7. while (<$data>) {
  8.         s/^(?:\S+\s+){2}//;
  9.         push @{ $wanted[0] },$_."\n" if /^(:?\S+\s+){9}\w*ok$/&&s/\s+/\t/g;
  10.         push @{ $wanted[1] },$_."\n" if /^(:?\S+\s+){10}\w*ok$/&&s/\s+/\t/g;
  11.    }
  12. say XLS "@{ $wanted[0] }@{ $wanted[1] }";
  13. close $data;
  14. close XLS;
复制代码

QQ图片20131019154623.jpg (130.05 KB, 下载次数: 52)

结果

结果
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP