grep -Eパターンファイルでegrep()を使用しています。(-f path/to/file)。
これは、テキストのストリームの無限ループで行われます。これは、すべての入力を一度に累積してgrepに渡すことができないことを意味します(など*.log)。
次の実行で使用するために、grepがPATTERNファイルからビルドしているNFAを「保存」する方法はありますか?
私はグーグルを検索して、運が悪いのでドキュメントを読みました。
もう少し説明しようと思います。IPアドレスやドメインなどの正規表現(質問の一部ではありませんが、別の方法で提案することもできます)を含む文字列の固定数を見つける必要があります。検索はインターネットからのフィードで行われます。あなたはそれをテキストのストリームと考えることができます。grepストリームなので、すべての入力で使用することはできません。ストリームのチャンクを蓄積grepしてそれを使用できます(したがってgrep、各行で使用しません)が、これも制限されています(30秒としましょう)。
私が知っているgrep(ファイルから私の場合には)そのすべてのパターンからNFAを構築しています。したがって、ここでの私の質問はgrep、次の実行のためにそのNFAを変更しないため、保存するように指示できますか?これにより、毎回NFAを構築する時間を節約できます。
grepそのチャンクで実行するとします。
grep数回実行する必要があるのかはまだ明らかではありません。おそらく関連:90万パターンに対して1250文字列のマッチングが非常に遅いのはなぜですか?
grepテキストのストリームを処理するためのものですが、いくつかのインスタンスを実行する必要がある理由はまだわかりません。それらすべてを同じgrepインスタンスにフィードできないのはなぜですか?摂食する前にそれらを蓄積する必要があるのはなぜgrepですか?
grepテキストの1行につき1 つ実行していると言っていますか?テキストはどこから来ていますか?うtail -f選択肢も?