作者WalkingIce (会走路的冰块)
看板perl
标题Re: [请益] 合并line的问题
时间Thu Jun 7 15:04:04 2007
※ 引述《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)