- 論壇徽章:
- 0
|
文件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代表替換后得到的新文件- #!/user/bin/perl
- open (IN1, $ARGV[0]); #命令行中在perl文件后輸入的第一個(gè)參數(shù),代表文件1
- open (IN2, $ARGV[1]); #命令行中在perl文件后輸入的第二個(gè)參數(shù),代表第文件2
- while ($LINE1 = <IN1>, $LINE2 = <IN2>) #每次讀入文件1和文件2中的一行
- {
- chomp ($LINE1); #去掉行末尾的換行符
- chomp ($LINE2);
- @parts1 = split (/\s+/, $LINE1); #以空格為分隔符分割文件1中的一行得到數(shù)組
- $temp = $parts1[1];
- $temp =~ s/\[//; #去掉[
- $temp =~ s/\]//;
- @parts2 = split (/,/, $temp); #以,為分割符分割文件1某行第一個(gè)方括號(hào)內(nèi)的兩個(gè)數(shù)組
- $num1 = $parts2[1] - $LINE2; #將文件1某行第一個(gè)方括號(hào)內(nèi)第二個(gè)數(shù)字減去文件2對(duì)應(yīng)行的數(shù)字
- $NEWLINE = $parts1[0]." [".$num1.",".$parts2[1]."]" ;
- for ($i = 2; $i <= $#parts1; $i++) # $#parts1為數(shù)組@parts1最后一個(gè)元素的下標(biāo)
- {
- $NEWLINE = $NEWLINE." ".$parts1[$i];
- }
- print $NEWLINE."/n"; #打印出替換第一個(gè)方括號(hào)第一個(gè)數(shù)字后的行
- }
- close (IN2);
- close (IN1);
復(fù)制代碼 |
|