grepNo.30505
Cyber さん 11/10/25 15:17
 
100万行のファイルが1個あります。grep検索時に最初の行からではなく、最後の行か
ら検索開始することは可能ですか?

[ ]
RE:30505 grepNo.30507
秀丸担当 さん 11/10/25 15:36
 

>100万行のファイルが1個あります。grep検索時に最初の行からではなく、最後の行か
>ら検索開始することは可能ですか?

最後からgrepするということはできないです。
最後から検索するにはいったん開いてから、カーソルをファイルの最後に移動し
てから上検索をするしかないです。
ファイルが大きくて開くのに時間がかかる場合は、「ファイルの一部を開く」コ
マンドで開くと、ファイルの一部だけを開いてすぐに開いて、そこから上検索で
調べるという方法もあります。

「ファイルの一部を開く」コマンドはキー割り当てして実行します。
または、Windows2000/95タイプの開くダイアログでは、普通に「開く」のダイア
ログから左上の▼ボタンからファイルの一部を開くモードに切り替えできます。
WindowsVistaタイプでは開くボタンのドロップダウンから選択もできます。

[ ]
RE:30507 grepNo.30508
Cyber さん 11/10/25 16:12
 
>
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>WindowsVistaタイプでは開くボタンのドロップダウンから選択もできます。



「ファイルの一部を開く」という意味がわかりません。どのような現象が起こるので
すか?
OSはXPです。

[ ]
RE:30508 grepNo.30509
秀丸担当 さん 11/10/25 16:59
 

>「ファイルの一部を開く」という意味がわかりません。どのような現象が起こるので
>すか?

ファイルの一部だけを読み込んで、読み込んだ部分だけを表示する機能です。
例えば10MBのファイルがあって、最初から9MBぶんは読み込まずに、最後の1MBぶ
んだけを読み込んでその部分だけを表示します。

[ ]
RE:30509 grepNo.30510
Cyber さん 11/10/26 10:22
 
>
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>んだけを読み込んでその部分だけを表示します。


「ファイルの一部を開く」の「一部」とは常に1MBなのですか?それとも任意に設定
可能なのですか?


行を指定して、何行目から何行目までの範囲でgrep検索可能ですか?

[ ]
RE:30510 grepNo.30511
秀丸担当 さん 11/10/26 11:02
 

>「ファイルの一部を開く」の「一部」とは常に1MBなのですか?それとも任意に設定
>可能なのですか?

「ファイルの一部を開く」で開いた場合はその直後にダイアログボックスが出る
ので、そこで任意のサイズを指定できます。

>行を指定して、何行目から何行目までの範囲でgrep検索可能ですか?

grepでは何行目から何行目まで行を指定するということはできないです。

[ ]
RE:30511 grepNo.30542
sary さん 11/11/05 14:59
 
>>行を指定して、何行目から何行目までの範囲でgrep検索可能ですか?
>
>grepでは何行目から何行目まで行を指定するということはできないです。

以前秀丸エディタにて40GB超で1億行強の(1行は最大2002バイト)ファイルをgrepし
たことがあったのですが、
特にフリーズするようなことはありませんでした。

grep開始や終了行の指定ができない代わりに、検索対象行の制限はないと考えてよろ
しいでしょうか?
(設定にファイルの開ける行数指定が確かありますが、grepはその制限外でしょう
か?)

[ ]
RE:30510 grepNo.30543
山紫水明 さん 11/11/05 21:45
 

>行を指定して、何行目から何行目までの範囲でgrep検索可能ですか?

 遅いコメントですが,次のようなマクロを使えば,できるかもしれません。

//----------------------------------------------------------//
//  範囲を指定してグレップ

$start = input("開始行");
if( !result ) endmacro;
$last = input("最終行");
if( !result ) endmacro;
if( !selecting ) selectword;
$search = gettext( seltopx, seltopy, selendx, selendy );
#start = val($start);
#last = val($last);
if( #start > #last ) {
    #a = #start;
    #start = #last;
    #last = #a;
}
#soption = searchoption;
$sbuffer = searchbuffer;
setcompatiblemode 0x0200;
$base = basename2;
$file = filename2;
movetolineno 1, #start + 1;
beginsel;
movetolineno 1, #last;
copy;
openfile "/h";
#handle = hidemaruhandle(0);
paste;
grepdialog2 $search, "(現在の内容)", ".";
closehidemaruforced #handle;
disabledraw;
gofiletop;
while( 1 ) {
    searchdown2 "(?<=^\\()[0-9]+", regular;
    if( !result ) break;
    $line = gettext( seltopx, seltopy, selendx, selendy, 1 );
    insert str(#start + val($line));
}
if( searchoption & 0x00000400 ) {   //フルパス出力
    call PlusYen $file;
    $base = $$return;
}
replaceallfast "^", $base, regular;
clearupdated;
setsearch $sbuffer, #soption;
endmacro;

PlusYen:
$$s = $$1;
while( 1 ) {
    ##n = strstr($$s, "\\", ##n);
    if( ##n < 0 ) break;
    $$s = leftstr($$s, ##n + 1) + "\\" + midstr($$s, ##n + 1, 999);
    ##n = ##n + 2;
}
return $$s;
//----------------------------------------------------------//

                          山紫水明(ユーザー)
                          SANSHISUIMEI

[ ]
RE:30542 grepNo.30546
秀丸担当 さん 11/11/07 09:52
 

>grep開始や終了行の指定ができない代わりに、検索対象行の制限はないと考えてよろ
>しいでしょうか?
>(設定にファイルの開ける行数指定が確かありますが、grepはその制限外でしょう
>か?)

通常のgrepの場合は、おっしゃる通り制限は無いです。
ただ、「追加の条件」をONにして使う場合や、V8.11βで追加された動作環境の
「常に文字数制限等を解除した状態で実行」をONにして使う場合は、仮想的に
「開く」して読み込んだ状態で検索するので、通常に開く場合と同じような制限
が出てきます。

[ ]