Re: [請益] 合併line的問題
※ 引述《tear2001 ( Play ball !!)》之銘言:
: 目前我有一串數列
: 367 0.619 0.610 0.646 0.593 0.513 0.509 0.488 0.567
: 0.600 0.600 0.598 0.579 0.584 0.577 0.541 0.570 0.554
: 364 0.619 0.610 0.646 0.593 0.513 0.510 0.489 0.567
: 0.600 0.600 0.598 0.579 0.584 0.575 0.542 0.570 0.554
: 365 0.619 0.610 0.646 0.593 0.513 0.510 0.489 0.567
: 0.600 0.600 0.598 0.579 0.584 0.577 0.542 0.570 0.554
: 361 0.619 0.610 0.646 0.593 0.513 0.510 0.489 0.567
: 0.600 0.600 0.598 0.579 0.584 0.577 0.542 0.570 0.554
: 362 0.619 0.610 0.646 0.593 0.513 0.510 0.489 0.567
: 0.600 0.600 0.598 0.579 0.584 0.577 0.542 0.570 0.554
: 363 0.619 0.610 0.646 0.593 0.513 0.510 0.489 0.567
: 0.600 0.600 0.598 0.579 0.584 0.577 0.542 0.570 0.554
: 359 0.625 0.620 0.641 0.606 0.522 0.520 0.501 0.579
: 0.589 0.590 0.588 0.595 0.589 0.579 0.540 0.562 0.545
: 我想把第一行跟第二行合併
: 第三跟第四 第五跟第六..............
: foreach $line (<FID>) {
: if( $line =~ /^0/ ){ #line開頭為0的就跟上一行合併
: $line =~ s/\n//, $line ;
: } else {
: print $line;
: }
: print $line;
: }
: 但是檔案紋風不動....orz
: 能請板上高手幫忙檢查一下哪裡出了問題ㄇ?
比對的部份我覺得很奇怪,你這個方法的邏輯是
「如果開頭為 0 ,我就把這一行的換行給去掉」
可是第一行跟地二行之所以會分開來,是因為第一行最後面的 newline
而非第二行 (開頭為0) 的 newline
因此我改成「只要開頭不是 0,就把 newline 去掉」
foreach $line (<FID>) {
chomp($line) if ($line !~ /^\s0/);
print $line;
}
^\s0 <--開頭有隔一個空格才出現 0
如果只是要單純地把第一行跟第二行合併
$i = 0;
foreach $line (<FID>) {
chomp($line) if (++$i%2 == 1); // $i 遞增,mod 2 如果是 1 代表奇數行
print $line;
}
--
我想你會衰成這樣都是我害的
---- Tizzy Mac
緊張的麥金塔?這是誰(._.?)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.128.98.6
※ 編輯: WalkingIce 來自: 140.128.98.6 (06/07 15:08)
討論串 (同標題文章)
Perl 近期熱門文章
PTT數位生活區 即時熱門文章