シェルで広く使用されている強力なコマンドの 1 つが grep です。入力ファイルを検索し、指定されたパターンが見つかった行を照合します。デフォルトでは、一致したすべてのパターンが標準出力 (通常は端末) に出力されます。一致した出力をファイルなどの他のストリームにリダイレクトすることもできます。
grep の基本的な使い方は次のとおりです:
$ grep "some text" file.txt
grep は、出力で一致した文字列を色分けして強調表示できます。ただし、デフォルトでは、そのオプションはオフになっています。
$ grep abc a_file.txt abcdef
—色 パラメータは、grep に出力内の検索用語に色を付けるように指示します。これにより、行上の他のすべてのテキストの中でそれらを目立たせることができます。 GREP_COLOR を使用して、必要な色を選択します 環境変数:export GREP_COLOR=36 はシアン、export GREP_COLOR=32 はライム グリーンです。
3 つのカラー オプションを利用できます:
- –color=auto
- –color=常に
- –color=never
color=always を指定すると、一致した文字列に色が付けられます。
$ grep --color=always abc a_file.txt abcdef
多くの場合、出力をページ送りする必要があります:
$ grep --color=always abc a_file.txt | less ESC[01;31mabcESC[00mdef (END)
問題は、less がデフォルトでこれらの制御文字を認識しないことです。 -R パラメータを使用する必要があります。
$ grep --color=always abc a_file.txt |less -R abcdef
または、さらに使用してください。
$ grep --color=always abc a_file.txt | more abcdef
もう 1 つの問題のあるシナリオは、grep の出力をファイルに保存する場合です。出力ファイルにはこれらの制御文字が含まれます。
$ grep --color=always abc a_file.txt > myoutput.txt $ less myoutput.txt ESC[01;31mabcESC[00mdef myoutput.txt (END)
color=auto を指定すると、出力がコマンドにパイプされるか、ファイルにリダイレクトされない限り、出力に色が表示されます。
最後に、grep 固有の環境変数で color パラメーターを指定できます。その後、コマンド ラインに入力する必要はありません。
$ export GREP_OPTIONS='--color=always'
最終メモ
grep コマンドは、ターミナルの武器の中で最も一貫して便利で強力なものの 1 つです。その前提は単純です:1 つ以上のファイルが与えられた場合、特定の正規表現パターンに一致するそれらのファイルのすべての行を出力します。一致するパターンを強調表示するには、-color オプションを使用します。オプションの位置は重要ではありませんが、規則ではオプションを最初に配置します。