亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
123下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 8794 | 回復(fù): 22
打印 上一主題 下一主題

如何在perl中同時(shí)打開兩個(gè)文件,將兩個(gè)文件對(duì)應(yīng)行的數(shù)據(jù)進(jìn)行處理 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2016-05-10 17:17 |只看該作者 |倒序?yàn)g覽
文件1:
wav/wanyanbo/near/001.wav  [812,4282]  [1267,1429]  [1819,2027]  [2442,2648]  [3044,3283]  [3688,4024]
wav/wanyanbo/near/002.wav  [737,4076]  [1160,1312]  [1698,1866]  [2256,2439]  [2838,3158]  [3578,3827]
wav/wanyanbo/near/003.wav  [758,4510]  [1120,1302]  [1738,2093]  [2473,2838]  [3213,3623]  [3994,4221]
wav/wanyanbo/near/004.wav  [744,4100]  [1160,1387]  [1776,1996]  [2377,2664]  [3004,3171]  [3564,3885]
wav/wanyanbo/near/005.wav  [692,4330]  [1105,1353]  [1771,1948]  [2322,2597]  [3040,3371]  [3756,4141]
wav/wanyanbo/near/006.wav  [743,4358]  [1185,1526]  [2018,2430]  [2815,3023]  [3439,3620]  [4009,4138]
wav/wanyanbo/near/007.wav  [746,4633]  [1119,1550]  [2042,2356]  [2769,3007]  [3366,3508]  [3922,4403]
wav/wanyanbo/near/008.wav  [713,4592]  [1093,1528]  [1991,2131]  [2559,2934]  [3317,3723]  [4136,4334]
wav/wanyanbo/near/009.wav  [768,4706]  [1133,1441]  [1815,2084]  [2479,2901]  [3344,3701]  [4117,4473]
wav/wanyanbo/near/010.wav  [741,4466]  [1156,1609]  [2048,2216]  [2643,2851]  [3308,3436]  [3870,4107]
文件2(下面的數(shù)據(jù)只是舉例,沒(méi)有規(guī)律):
100
200
300
400
500
600
700
800
900
1000
現(xiàn)要將文件1每一行中第一個(gè)方括號(hào)[]內(nèi)的第二個(gè)數(shù)字減去文件2對(duì)應(yīng)行的數(shù)字,并將取得的數(shù)字替換掉第一個(gè)方括號(hào)的第一個(gè)數(shù)字。例子如下:
文件1第1行第一個(gè)方括號(hào):[812,4282]   文件2第1行:100  
4282-100=4182
則文件1第一行第一個(gè)方括號(hào)變?yōu)椋篬4312,4282]
文件1第2行第一個(gè)方括號(hào):[737,4076]    文件2第2行:200  
4076-200=3876
則文件1第一行第一個(gè)方括號(hào)變?yōu)椋篬3876,4076]
.
.
.
以此類推
在linux下命令行下可以這樣嗎    perl findStart.pl file1 file2 > file3      #file3代表替換后得到的新文件
  1. #!/user/bin/perl

  2. open (IN1, $ARGV[0]);    #命令行中在perl文件后輸入的第一個(gè)參數(shù),代表文件1

  3. open (IN2, $ARGV[1]);    #命令行中在perl文件后輸入的第二個(gè)參數(shù),代表第文件2

  4. while ($LINE1 = <IN1>, $LINE2 = <IN2>)  #每次讀入文件1和文件2中的一行
  5. {
  6.         chomp ($LINE1);   #去掉行末尾的換行符

  7.         chomp ($LINE2);

  8.         @parts1 = split (/\s+/, $LINE1);  #以空格為分隔符分割文件1中的一行得到數(shù)組

  9.         $temp = $parts1[1];

  10.         $temp =~ s/\[//;  #去掉[

  11.         $temp =~ s/\]//;

  12.         @parts2 = split (/,/, $temp);  #以,為分割符分割文件1某行第一個(gè)方括號(hào)內(nèi)的兩個(gè)數(shù)組

  13.         $num1 = $parts2[1] - $LINE2;  #將文件1某行第一個(gè)方括號(hào)內(nèi)第二個(gè)數(shù)字減去文件2對(duì)應(yīng)行的數(shù)字

  14.         $NEWLINE = $parts1[0]."  [".$num1.",".$parts2[1]."]" ;  

  15.         for ($i = 2; $i <= $#parts1; $i++)  # $#parts1為數(shù)組@parts1最后一個(gè)元素的下標(biāo)
  16.         {
  17.                 $NEWLINE = $NEWLINE."  ".$parts1[$i];
  18.         }


  19.         print $NEWLINE."/n"; #打印出替換第一個(gè)方括號(hào)第一個(gè)數(shù)字后的行



  20. }
  21. close (IN2);

  22. close (IN1);
復(fù)制代碼

論壇徽章:
307
程序設(shè)計(jì)版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
2 [報(bào)告]
發(fā)表于 2016-05-10 18:08 |只看該作者
回復(fù) 1# 南宮慕容007
你是想說(shuō)啥

   

論壇徽章:
33
榮譽(yù)會(huì)員
日期: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運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-17 06:23:27操作系統(tǒng)版塊每日發(fā)帖之星
日期:2016-04-18 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-24 06:20:0015-16賽季CBA聯(lián)賽之天津
日期:2016-05-06 12:46:59
3 [報(bào)告]
發(fā)表于 2016-05-10 18:14 |只看該作者
先用 paste 合并成一個(gè)文件。 之后就是一個(gè)文件中的操作了。

要不然, awk 應(yīng)該也行。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2016-05-10 18:44 |只看該作者
就是有兩個(gè)文件,想用第一個(gè)文件某個(gè)位置的數(shù)字減第二個(gè)文件的數(shù)字,這兩個(gè)文件的行數(shù)是相等的回復(fù) 2# sunzhiguolu


   

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2016-05-10 18:45 |只看該作者
while里面不能同時(shí)放兩個(gè)文件是嗎回復(fù) 3# q1208c


   

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2016-05-10 18:57 |只看該作者
比如說(shuō)
文件1格式:
100 200 300
400 500 600
文件2格式:
100
200
現(xiàn)在要用文件1每一行第一個(gè)減去文件2對(duì)應(yīng)行,得到
0 200 300
200 500 600
能在一個(gè)perl文件里面做到嗎?例如
while($LINE1 = <文件1>, $LINE2 = <文件2>)
{
          相應(yīng)操作
  }
回復(fù) 2# sunzhiguolu


   

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2016-05-10 19:00 |只看該作者
如果合成了一個(gè)文件,那么怎么確定是哪一行減哪一行回復(fù) 3# q1208c


   

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2016-05-10 19:06 |只看該作者
其實(shí)我的意思就是能不能對(duì)兩個(gè)文件同時(shí)打開進(jìn)行操作,而不需要把這兩個(gè)文件合成一個(gè)文件再進(jìn)行操作回復(fù) 2# sunzhiguolu


   

論壇徽章:
307
程序設(shè)計(jì)版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
9 [報(bào)告]
發(fā)表于 2016-05-10 19:16 |只看該作者
回復(fù) 8# 南宮慕容007

  1. while (my $sA = <IN1>){
  2.     my $sB = <IN2>;
  3.     #...
  4. }
復(fù)制代碼

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2016-05-10 19:27 |只看該作者
那我上面的代碼只要把$LINE2 = <IN2>挪到while后面的{}里面就行了吧,但是這樣能確保$LINE1是指向文件1的第n行時(shí),$LINE2也是指向文件2的第n行嗎回復(fù) 9# sunzhiguolu


   
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP