免费注册 查看新帖 |

Chinaunix

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

如何在perl中同时打开两个文件,将两个文件对应行的数据进行处理 [复制链接]

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
11 [报告]
发表于 2016-05-10 19:43 |只看该作者
回复 10# 南宫慕容007
你只要一试就明白了.

   

论坛徽章:
0
12 [报告]
发表于 2016-05-10 20:24 |只看该作者
这就试回复 11# sunzhiguolu


   

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
13 [报告]
发表于 2016-05-10 22:07 |只看该作者
回复 7# 南宫慕容007

paste 是把相同行号的行合并的, 相当于横向合并。 所以, 你原来的计算就在新文件的同一行中进行了。 会比较简单。

如果你在两个文件中进行操作。 需要判断两个文件是否同时结束。 除非你能保证两个文件的行数一定是一样多的。
   

论坛徽章:
6
15-16赛季CBA联赛之新疆
日期:2016-03-22 22:34:5915-16赛季CBA联赛之山东
日期:2016-04-11 09:08:41程序设计版块每日发帖之星
日期:2016-06-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-19 06:20:00每日论坛发贴之星
日期:2016-07-19 06:20:0015-16赛季CBA联赛之青岛
日期:2016-07-20 22:44:17
14 [报告]
发表于 2016-05-11 00:23 |只看该作者
$>  paste file1 file2|perl -npe 's/^(.+?\[)(\d+),(\d+)(\].+?)\s+(\d+)$/$1.($3-$5).","."$3$4"/e'
wav/wanyanbo/near/001.wav  [4182,4282]  [1267,1429]  [1819,2027]  [2442,2648]  [3044,3283]  [3688,4024]
wav/wanyanbo/near/002.wav  [3876,4076]  [1160,1312]  [1698,1866]  [2256,2439]  [2838,3158]  [3578,3827]
wav/wanyanbo/near/003.wav  [4210,4510]  [1120,1302]  [1738,2093]  [2473,2838]  [3213,3623]  [3994,4221]
wav/wanyanbo/near/004.wav  [3700,4100]  [1160,1387]  [1776,1996]  [2377,2664]  [3004,3171]  [3564,3885]
wav/wanyanbo/near/005.wav  [3830,4330]  [1105,1353]  [1771,1948]  [2322,2597]  [3040,3371]  [3756,4141]
wav/wanyanbo/near/006.wav  [3758,4358]  [1185,1526]  [2018,2430]  [2815,3023]  [3439,3620]  [4009,4138]
wav/wanyanbo/near/007.wav  [3933,4633]  [1119,1550]  [2042,2356]  [2769,3007]  [3366,3508]  [3922,4403]
wav/wanyanbo/near/008.wav  [3792,4592]  [1093,1528]  [1991,2131]  [2559,2934]  [3317,3723]  [4136,4334]
wav/wanyanbo/near/009.wav  [3806,4706]  [1133,1441]  [1815,2084]  [2479,2901]  [3344,3701]  [4117,4473]
wav/wanyanbo/near/010.wav  [3466,4466]  [1156,1609]  [2048,2216]  [2643,2851]  [3308,3436]  [3870,4107]

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
15 [报告]
发表于 2016-05-11 02:54 |只看该作者
  1. paste b a|perl -ple 's!(\d+)\s+(.+?\[).+?,(\d+)!$2.($3-$1).qq(,$3)!e'
复制代码
wav/wanyanbo/near/001.wav  [4182,4282]  [1267,1429]  [1819,2027]  [2442,2648]  [3044,3283]  [3688,4024]
wav/wanyanbo/near/002.wav  [3876,4076]  [1160,1312]  [1698,1866]  [2256,2439]  [2838,3158]  [3578,3827]
wav/wanyanbo/near/003.wav  [4210,4510]  [1120,1302]  [1738,2093]  [2473,2838]  [3213,3623]  [3994,4221]
wav/wanyanbo/near/004.wav  [3700,4100]  [1160,1387]  [1776,1996]  [2377,2664]  [3004,3171]  [3564,3885]
wav/wanyanbo/near/005.wav  [3830,4330]  [1105,1353]  [1771,1948]  [2322,2597]  [3040,3371]  [3756,4141]
wav/wanyanbo/near/006.wav  [3758,4358]  [1185,1526]  [2018,2430]  [2815,3023]  [3439,3620]  [4009,4138]
wav/wanyanbo/near/007.wav  [3933,4633]  [1119,1550]  [2042,2356]  [2769,3007]  [3366,3508]  [3922,4403]
wav/wanyanbo/near/008.wav  [3792,4592]  [1093,1528]  [1991,2131]  [2559,2934]  [3317,3723]  [4136,4334]
wav/wanyanbo/near/009.wav  [3806,4706]  [1133,1441]  [1815,2084]  [2479,2901]  [3344,3701]  [4117,4473]
wav/wanyanbo/near/010.wav  [3466,4466]  [1156,1609]  [2048,2216]  [2643,2851]  [3308,3436]  [3870,4107]

论坛徽章:
0
16 [报告]
发表于 2016-05-11 09:34 |只看该作者
-npe 表示后面直接跟正则表达式吗,就不需要再单独写一个perl文件回复 15# sunzhiguolu


   

论坛徽章:
0
17 [报告]
发表于 2016-05-11 09:42 |只看该作者
我写了那么多行,你们一行就解决了,太凶残了回复 15# sunzhiguolu


   

论坛徽章:
0
18 [报告]
发表于 2016-05-11 09:48 |只看该作者
太赞了回复 13# q1208c


   

论坛徽章:
0
19 [报告]
发表于 2016-05-11 10:02 |只看该作者
.+?这三个符号放在一起好诡异,?是修饰前面.+的吧,即把.+看成一个整体,再由?修饰回复 14# RE_HASH


   

求职 : 技术支持/维
论坛徽章:
0
20 [报告]
发表于 2016-05-11 10:32 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP