1. ホーム
  2. bash

[解決済み] 巨大なファイル(80GB)のGreppingを高速化する方法は?

2022-05-30 11:16:12

質問

 grep -i -A 5 -B 5 'db_pd.Clients'  eightygigsfile.sql

これは、他に過負荷のないかなり強力なLinuxサーバで1時間実行されています。 grepに代わるものはありますか?改善することができる私の構文についての何か、(より良いegrep、fgrep?)

ファイルは、実際には別のサーバーへのマウントで共有されているディレクトリにありますが、実際のディスクスペースはローカルなので、それは何の違いも生じないはずです?

grep は最大 93% の CPU を掴んでいます。

どのように解決するのですか?

いくつかの方法があります。

1) grepコマンドの前に LC_ALL=C を付けて、UTF-8の代わりにCロケールを使用します。

2) 使用する fgrep を使うのは、正規表現ではなく、固定文字列を検索しているからです。

3) -i オプションを削除してください。

というわけで、コマンドは次のようになります。

LC_ALL=C fgrep -A 5 -B 5 'db_pd.Clients' eightygigsfile.sql

また、RAMディスクにコピーしておくとより速くなります。