[解決済み] 最速のgrep
2023-08-30 08:15:35
質問
を作るためのヒントがあれば教えて欲しいです。
grep
をできるだけ速くするためのヒントがあれば教えてください。私はかなり大きなテキストファイルのベースを持っているので、できるだけ速く検索する必要があります。それらをすべて小文字にすることで
-i
というオプションを追加しました。これによって、検索がずっと速くなります。
また
-F
と
-P
の2つのモードがあり、デフォルトのものよりも高速に動作します。検索文字列が正規表現でない(単なるプレーンテキスト)場合は前者を、正規表現が含まれる場合は後者を使うことにしています。
を高速化した経験をお持ちの方はいらっしゃいますか?
grep
? 例えば、ある特定のフラグで一からコンパイルするとか (私は Linux CentOS を使っています)、ある方法でファイルを整理するとか、あるいは何らかの方法で検索を並列化させるとか?
どのように解決するのですか?
次のようにしてください。
GNU並列
には
との併用方法の例
grep
:
grep -r
grepsはディレクトリを再帰的に検索します。マルチコアCPUでは、GNUparallel
はしばしばこれを高速化することができます。find . -type f | parallel -k -j150% -n 1000 -m grep -H -n STRING {}
これは1コアあたり1.5ジョブを実行し、1000の引数を
grep
.
大きなファイルの場合、入力をいくつかのチャンクに分割することができます。
--pipe
と
--block
という引数があります。
parallel --pipe --block 2M grep foo < bigfile
SSH を使って複数の異なるマシンで実行することもできます (パスワードを避けるために ssh-agent が必要です)。
parallel --pipe --sshlogin server.example.com,server2.example.net grep foo < bigfile
関連
-
[解決済み] ファイルを grep して、その周辺の行をいくつか表示する?
-
[解決済み] すべてのディレクトリとサブディレクトリを再帰的にgrepするにはどうしたらいいですか?
-
[解決済み] Gitの履歴からコミットしたコードをgrep(検索)する方法
-
[解決済み] Linux で grep を使ってファイル名だけを表示するにはどうしたらいいですか?
-
[解決済み] grepによるネガティブマッチング(fooを含まない行にマッチする)
-
[解決済み] grep -R からディレクトリを除外するにはどうすればよいですか?
-
[解決済み] grep --exclude/--include構文を使って特定のファイルをgrepしないようにする
-
[解決済み] 連続したストリームを「grep」する方法とは?
-
[解決済み】特定の拡張子を持つファイルのみを再帰的にgrepするにはどうすればよいですか?
-
[解決済み] sed を使ってファイルの名前を大量に変更する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] スクリプトの実行に関連したファイルの参照
-
[解決済み] コマンドでファイルを使用し、出力を切り詰めることなく同じファイルにリダイレクトするにはどうすればよいですか?
-
[解決済み] MSYSでフォルダを閲覧する
-
[解決済み] 接頭辞・接尾辞を使った名前の変更方法について教えてください。
-
[解決済み] ssh 鍵を生成する bash スクリプトの enter キー押下を自動化する。
-
[解決済み] 空のディレクトリの検索
-
[解決済み] 指定された時間/日付まで眠る
-
[解決済み] Bashのコマンドラインと入力制限
-
[解決済み] sed を使ってファイルの名前を大量に変更する
-
[解決済み] DockerfileでDockerコンテナにBashのエイリアスを設定するにはどうしたらいいですか?