GNU/Linux >> Linux の 問題 >  >> Linux

カラー出力をgrepする方法

シェルで広く使用されている強力なコマンドの 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 オプションを使用します。オプションの位置は重要ではありませんが、規則ではオプションを最初に配置します。


Linux
  1. 「猫」の出力で単語を強調表示する方法は??

  2. Linuxでfdコマンドを使用してファイルを検索する方法

  3. Linux で diff の結果を保存する方法

  1. パターンの後にコンテンツをgrepする方法は?

  2. grep から cp に出力をパイプする方法は?

  3. コマンド出力を複数の引数として別のコマンドに渡す方法

  1. 複数のパターンでGrepを実行する方法は?

  2. ターミナルでマルチスレッドGrepを開始する方法は?

  3. ロングからワイドへのgrep出力