回答:
unix.stackexchange.comには、このきちんとしたトリックがある答えがありました。
grep -E --color 'pattern|$' file.txt
または
grep --color 'pattern\|$' file.txt
これは、パターンまたは各行の行末に一致します。パターンのみが強調表示されます。
GREP_OPTIONS='--color'します~/.bashrc(または設定を変更してを含めます--color)。新しいターミナルを起動するか、現在のターミナルのコマンドラインでその割り当てを実行して、それを有効にする必要があります。
less(またはそのような)の使用もお勧めしますが、より教訓的な解決策を示したいと思います。この関数を定義したら:
関数highlight()
{
sed "s / $ 1 /` tput smso`& `tput rmso` / g" "$ {2:-}"
}
次のように使用できます。
command | highlight pattern
highlight pattern file.txt
注:このバージョンでは大文字と小文字が区別され、式のi後gに追加するだけで変更されますsed。
tput値をハードコーディングする代わりに呼び出します。この方法echo -eでは、他の効果をもたらす可能性のあるの使用も避けます。
prog | highlight "pattern"かhighlight "pattern" file:highlight () { local file=${2:--}; sed "s/$1/$(tput smso)&$(tput rmso)/gi" "$file"; }
sedスキルは基本的に存在しません。パターンの大文字と小文字を区別するために、どのように変更する必要がありますか。とにかく、それをbash_functions includeに追加します。どうもありがとうございました。
パッシング-Cにgrep十分に高い値では、これを行います。
less パターンを強調しているので、
less -p 'mypattern' file.txt
または
ridiculously | long | pipe | less
次にless /でハイライトされるパターンを検索します。
サイドノート:
たとえば、
エイリアスalias grep="grep --color=tty"を設定し、そのように使用するなど、コマンドを改善できます。
grep 'mypattern' file.txt;
grep(zgrep、bzgrep、bzfgrepなど)で使用されます。したがって、すべての形式のgrepが一貫して動作するようにするには、grepの各形式にエイリアスを設定する必要があります。上記の@Casualの新しい答えbzgrep pattern /var/log/messages.?.gzは、のようなものでは役に立ちません。これは、色の強調表示が非常に役立つ例です。