ハイライトモードを使用したカラーグレップ出力

ハイライトモードを使用したカラーグレップ出力

次のスクリプトがありますfind-file

find . -type f -iname "*$1*" -printf '%P\n' \
| GREP_COLORS="sl=0;33;49:ms=1;34;49" grep --color=always '^\|[^/]*$' \
| grep -i --color=auto "$1"

それがすることは:

  • パス部分の色分け
  • 基本名セクションのパターンの色を指定します。

ここに画像の説明を入力してください。

問題:パターン化後に色がリセットされます。

デフォルト名部分の場合は、完全に白色にすることができます。これはトリックを行います(変更する方法が見つかりませんでしたが)。

パス部分の場合、上記のスクリーンショットに示すように、まだ問題があります。色がリセットされ、ファイルパスが実際に終わる場所を見ることができなくなりました!

これには回避策がありますか?

編集する -3つの回避策があります!以下の提案はすべて有効で少し異なりますが、質問に対する回答です。パターンのすべての発生を強調するオプションを選択しましたが、ほぼ連続でしたが、率直に言ってほぼ同じで、選択が困難でした...

編集する -これを改善したい。分析前に照会結果はブロックされません。つまり、出力がフラッシュされ、1行ずつ処理されます。可能ですか?

ベストアンサー1

たぶんこんなことはありませんか?

ここに画像の説明を入力してください。

注文する:

pattern='oRg'; find . -type f -iname "*$pattern*" -printf '%P\n' \
| GREP_COLORS="sl=0;33:mt=1;34" grep --color=always '[^/]*$' \
| GREP_COLORS="sl=1;34" grep --color=always -iP "$pattern(?=[^/]*$)" \
| GREP_COLORS="sl=0;33" grep -i "$pattern" --color

強調表示したくない場合は、最後の行を削除してください。模様部分dirname

grepの環境変数を確認してください。GREP_COLORSセクションを参照してください。

おすすめ記事