免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: wxusheng
打印 上一主题 下一主题

帮忙看看这个问题怎么办啊 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-09-29 16:55 |只看该作者
这是原始文件,需要转换,把时间上的括号去掉2010-09-19 12:36:44 时要成这种格式

求职 : 技术支持/维
论坛徽章:
0
12 [报告]
发表于 2010-09-29 17:15 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
13 [报告]
发表于 2010-09-29 17:26 |只看该作者
需要把文件中的时间变为2010-09-19 12:37:42 这种格式,附件是文件多谢

需要转换的文件.zip

596 Bytes, 下载次数: 14

论坛徽章:
0
14 [报告]
发表于 2010-09-29 17:38 |只看该作者
#利用正则表达式解决
while ( my $line = <DATA> ) {
        chomp $line;
        $line =~/
          (\d+)   #匹配开头数字
          [^(]+ #括号左边所有的
          \((.*?):\d+\) #利用?进行最短匹配
          [^(]+\((.*?):\d+\) #三个相同的匹配
          [^(]+\((.*?):\d+\)
          \s+(\d+)
          .* #剩余的结尾
          /x;
        print "$1\t$2\t$3\t$4\t$5\n";
}
__DATA__
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)
结果
262310        2010-09-19 12:37        2010-09-19 12:37        2000-01-01 00:00        1198194710
264735        2010-09-19 12:36        2010-09-19 12:36        2010-09-19 12:36        0
267177        2010-09-19 12:36        2010-09-19 12:36        2010-09-19 12:36        1198194710

论坛徽章:
0
15 [报告]
发表于 2010-09-29 17:39 |只看该作者
#利用正则表达式解决
while ( my $line = <DATA> ) {
        chomp $line;
        $line =~/
          (\d+)   #匹配开头数字
          [^(]+ #括号左边所有的
          \((.*?):\d+\) #利用?进行最短匹配
          [^(]+\((.*?):\d+\) #三个相同的匹配
          [^(]+\((.*?):\d+\)
          \s+(\d+)
          .* #剩余的结尾
          /x;
        print "$1\t$2\t$3\t$4\t$5\n";
}
__DATA__
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)
结果
262310        2010-09-19 12:37        2010-09-19 12:37        2000-01-01 00:00        1198194710
264735        2010-09-19 12:36        2010-09-19 12:36        2010-09-19 12:36        0
267177        2010-09-19 12:36        2010-09-19 12:36        2010-09-19 12:36        1198194710

论坛徽章:
0
16 [报告]
发表于 2010-09-29 20:05 |只看该作者
回复 9# wxusheng


    啊,你是在windows上啊
   把单引号换成双引号试试

论坛徽章:
0
17 [报告]
发表于 2010-10-03 22:09 |只看该作者
时间前面是空格不是制表符,需要在时间前面是制表符,怎么做楼上的想想办法

论坛徽章:
0
18 [报告]
发表于 2010-10-04 10:16 |只看该作者
回复 17# wxusheng


    你是说,原来的文本时间前面是制表符,还是想要替换后的时间前面是制表符啊

论坛徽章:
0
19 [报告]
发表于 2010-10-04 11:17 |只看该作者
回复 17# wxusheng


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

这样就OK,
如果是windows机器把单引号换成双引号即可

论坛徽章:
0
20 [报告]
发表于 2010-10-04 13:46 |只看该作者
太谢谢楼上了,可以了,多谢多谢,不过我先前写错了,转换后的时间是需要秒的,麻烦大侠看看怎么改一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP