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

Chinaunix

標題: 請高手解答一個文件內容刪除的問題 [打印本頁]

作者: ludio333    時間: 2011-09-03 20:55
標題: 請高手解答一個文件內容刪除的問題
現(xiàn)在有個文件
假設內容是
abcd   id=1 defg
bda id=2 dfg

。。。

ert id=65535 dvdf
其中每行有一個id是唯一的
順序也是從1-65535但每行除了id其他內容沒有規(guī)律


現(xiàn)在需要把文件內容的
id=32768至id=65535行的數據刪除不能留下空行
請問有什么效率高一點的辦法嗎
?

我試過用把32768-65535放在一個數組
然后用grep
但是效率太差了 感覺比while文件再循環(huán)32768-65535做刪除慢
作者: zhlong8    時間: 2011-09-03 23:12
perl -pe "exit if $. == 32768" file
作者: Kitaisky    時間: 2011-09-04 01:15
perl -i.bak -ne 'print unless ($.==32768..65535)' file
作者: RE_HASH    時間: 2011-09-04 02:04
while (<>)
{
$I ++;
last if ($I >32767);
print;
}

Linux的話還可以
head -32767 a.txt > b.txt
作者: ludio333    時間: 2011-09-05 12:12
回復 2# zhlong8


    $.不是行號么。。。
這文件不包含id的行數是不固定的
我只是寫一個子程序
傳遞進去文件名,要刪除的id范圍
現(xiàn)在的想法是把含id的行全部hash
然后按key裝入數組,再與要刪除范圍的數組使用Array:iff
找到deleted的數組;
但是不知道效率怎么樣
等忙完手頭的事情我在實驗一下
作者: yx07004212    時間: 2011-09-05 17:00
  1. sed -i '/id=32768/,/id=65535/d' infile
復制代碼
回復 1# ludio333
作者: perlnewbie    時間: 2011-09-05 18:57
  1. perl -ne "print unless /id=32768/../id=65535/"
復制代碼

作者: ludio333    時間: 2011-09-06 11:46
回復 7# perlnewbie


    這個能用???
我測試了一下不行啊
作者: Kitaisky    時間: 2011-09-06 12:09
回復  perlnewbie


    這個能用???
我測試了一下不行啊
ludio333 發(fā)表于 2011-09-06 11:46


測試過啦,一點問題沒有呀~~

難道你的 Perl 版本太低??

>5.10
作者: freflying    時間: 2011-09-11 20:26
給一段比較笨的代碼:
while (<>) {
        @array = split;
        $id = (split "=",$array[1])[1];
        if ( $id >= 32768 ) {
                if ( $id <= 65535) {
                        next;
                }
        }
   print;
}




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2