色分けされた grep -- ハイライトされた一致を含むファイル全体を表示する 質問する

色分けされた grep -- ハイライトされた一致を含むファイル全体を表示する 質問する

grepのフラグは非常に便利だと思います--color=always。ただし、grep は一致した行のみを出力します (コンテキスト行を要求しない限り)。出力される各行に一致があるため、強調表示によって得られる機能は最大限に活用されません。

catファイル全体を表示して、パターン一致が強調表示された状態を確認したいです。

一致するかどうかに関係なく、読み取られるすべての行を印刷するように grep に指示する方法はありますか? ファイルのすべての行で grep を実行するスクリプトを作成できることはわかっていますが、標準でこれが可能かどうか興味がありましたgrep

ベストアンサー1

これを行うには、いくつかの方法があります。

grep --color 'pattern\|$' file
grep --color -E 'pattern|$' file
egrep --color 'pattern|$' file

シンボル|は OR 演算子です。 を使用してエスケープするか、 -E を追加するか、の代わりに コマンド\を使用して、検索テキストを正規表現として解釈する必要があることを grep に指示します。egrepgrep

検索テキスト「pattern|$」は実際にはトリックであり、patternOR 行と終了行が一致します。すべての行に終了行があるため、すべての行が一致しますが、行の終了は実際には文字ではないため、色は表示されません。

色付きの部分もパイプに通すには (例: へ)、にパラメータをless指定します。always--color

grep --color=always 'pattern\|$' file | less -r
grep --color=always -E 'pattern|$' file | less -r
egrep --color=always 'pattern|$' file | less -r

おすすめ記事