grepで行番号がずれるNo.08557
colder さん 15/02/26 21:36
 
colderです

ver8.52β3に更新したところ、grepで行番号が徐々にずれるようになりました。
テスト用に20万行の行番号だけが書かれたテキストで
検索文字列"0000"でgrepしたところ、最終的に3行ずれました。
再現するでしょうか。

[ ]
RE:08557 grepで行番号がずれるNo.08558
秀まるお さん 15/02/26 22:33
 
 colderさん、いつもテストしていただいてありがとうございます。

 連絡いただいた行番号のずれですが、とりあえずこちらで簡単にテストした限
りは再現しないようでした。

 マクロとして、

    disabledraw;
    #i = 1;
    while( #i <= 20 * 10000 ) {
        insert str(#i) + "\n";
        #i = #i + 1;
    }

 で作った行番号だけの20万行のテキストデータを作ってそれを「temp.txt」で
Shift-JIS文字コードで保存して、grep検索で"000"を検索すると、

・・・
・・・
・・・
temp.txt(196000): 196000
temp.txt(197000): 197000
temp.txt(198000): 198000
temp.txt(199000): 199000
temp.txt(200000): 200000

 みたいな結果になりまして、タグジャンプしても正しくジャンプするようでし
た。

 ちなみにですが、こちらでいろいろテストしてて、行番号がずれるケースが一
応ありました。Shift-JISなんだけども無理矢理ファイルの先頭にBOMの入った
utf-8ファイルがあって、それを対象にgrep検索したら行番号がずれる現象が起
きました。Shift-JISの文字列を無理矢理utf-8と解釈すると、改行じゃない所に
改行コードが混じったかのように解釈されるケースがあって、それで行番号がす
れることがあります。

 それについては、一応、V8.52β3のgrepの方が正しい行番号で動作してるはず
になってます。

 行番号だけのファイルだとそういう文字コード変換ミスが関係することは無い
はずなので、何か別の原因なのかなぁと思いますけども…。

 ちょっと心当たりが無いので、何か他に再現のヒントがあったら教えてほしい
ような…。

 他のファイルでもテストしてみます。

[ ]
RE:08558 grepで行番号がずれるNo.08559
colder さん 15/02/26 22:51
 
colderです

こちらではutf-16(BOM無し)のファイルまたは(現在の内容)でgrepしたときにずれます。

[ ]
RE:08559 grepで行番号がずれるNo.08560
colder さん 15/02/26 22:55
 
colderです

追加です。
改行コードがCR+LFであることもずれる条件のようです。

[ ]
RE:08558 grepで行番号がずれるNo.08561
秀まるお さん 15/02/26 22:57
 
 同じファイルをutf-16で保存したら再現しました。たしかに3行ずれました。

 明日詳しく調べてみます。

[ ]
RE:08559 grepで行番号がずれるNo.08562
秀まるお さん 15/02/26 22:58
 
 ちょっと遅かった。

 再現できました。

[ ]