+ -
当前位置:首页 → 问答吧 → 帮忙看看这个问题怎么办啊

帮忙看看这个问题怎么办啊

时间:2010-09-29

来源:互联网

现在有各TEXT,需要括号内的时间分裂出来怎么办啊,如下表
aa        time        hh        kk        ll
262310        1284943062 (2010-09-19 12:37:42)        1284943061 (2010-09-19 12:37:41)        946728000 (2000-01-01 00:00:00)        1198194710 (cc)
264735        1284942984 (2010-09-19 12:36:24)        1284942965 (2010-09-19 12:36:05)        1284942967 (2010-09-19 12:36:07)        0 (bb)
267177        1284943004 (2010-09-19 12:36:44)        1284942990 (2010-09-19 12:36:30)        1284942991 (2010-09-19 12:36:31)        1198194710 (aa)


需要把上面这个表变成下面这各表,怎么实现啊 这只是其中几列,还有好多这种列都要变呢

aa        time        hh        kk        ll
262310        2010-9-19 12:37        2010-9-19 12:37        2000-1-1 0:00        1198194710
264735        2010-9-19 12:36        2010-9-19 12:36        2010-9-19 12:36        0
267177        2010-9-19 12:36        2010-9-19 12:36        2010-9-19 12:36        1198194710

作者: wxusheng   发布时间: 2010-09-29

  1. #!/usr/bin/perl

  2. use strict;
  3. use warnings;

  4. while (<DATA>) {
  5.     next if /^\s*$/;

  6.     print if /^\D/;

  7.     if (/^(\d+).+?\(([\d\-]+)\s(\d{1,2}:\d{1,2}).+?\(([\d\-]+)\s(\d{1,2}:\d{1,2}).+?\(([\d\-]+)\s(\d{1,2}:\d{1,2}):\d+\)\s+(\d+)/) {
  8.         print join("\t", ($1, $2, $3, $4, $5, $6, $7, $8)), "\n";
  9.     }
  10. }

  11. exit 0;


  12. __DATA__
  13. aa        time        hh        kk        ll
  14. 262310        1284943062 (2010-09-19 12:37:42)        1284943061 (2010-09-19 12:37:41)        946728000 (2000-01-01 00:00:00)        1198194710 (cc)
  15. 264735        1284942984 (2010-09-19 12:36:24)        1284942965 (2010-09-19 12:36:05)        1284942967 (2010-09-19 12:36:07)        0 (bb)
  16. 267177        1284943004 (2010-09-19 12:36:44)        1284942990 (2010-09-19 12:36:30)        1284942991 (2010-09-19 12:36:31)        1198194710 (aa)
复制代码

作者: longbow0   发布时间: 2010-09-29

楼上多谢,要是处理文本文件怎么写啊有很多行

作者: wxusheng   发布时间: 2010-09-29

本帖最后由 珞水的大叔 于 2010-09-29 10:29 编辑

perl -pe 's/\s\d+\s\((\d[^)]+):\d\d\)/ $1/g;s/\s\([^)]*\)$//g' 文件名

试试这个

作者: 珞水的大叔   发布时间: 2010-09-29

回复 珞水的大叔


    应该用pe,不是ne

作者: 99超人   发布时间: 2010-09-29

回复 99超人


    就是让他看一下先,呵呵,免得改了源文件
   重定向一下就可以了

作者: 珞水的大叔   发布时间: 2010-09-29

回复 珞水的大叔


    用n啥都看不到
用i参数才会直接修改文件

作者: 99超人   发布时间: 2010-09-29

回复 99超人

确实……
我忘了以前ne的时候都是自己写的print
我改一下
多谢超人啦

作者: 珞水的大叔   发布时间: 2010-09-29