パイプ出力をグロッピングするときに、grepをANSIカラーエスケープにするにはどうすればよいですか? grepの代わりに何か他のもの(perl?)を使ってうれしいです。grepで色付きテキスト、例: gcc | colorgcc | grep regexp
マイusercase:私は、(ANSIエスケープを使用して、UNIX端末上)の色とうまく
gcc foobar.c | colorgcc | grep regexp
ls --color | grep filename
仕事をしたいです。
私が望む行動のテスト例は:
echo -e "he\e[35mllo\e[00m" world |grep hell ==> he\e[35mllo\e[00m world
echo -e "\e[35m removed line\nhello\e[00m" world |grep hell ==> \e[35mhello\e[00m world
echo -e "\e[35m rem\e[1moved line\nhello\e[00m" world | grep hell ==> \e35m\e1mhello\e[00m world
現在、最初の行は、空の文字列を与え、そしてもう一つはuncolorised文字列 「こんにちは\ E [00メートルの世界」を提供します。ここで、\ e [35mと\ e00mは色(属性)修飾子です。文字の色は、最後の色(属性)エスケープシーケンス\ e [P1; P2; .. mここで、P1、P2などは数字のシーケンスです。 \ e [P1m \ e [P2mは\ e [P1; P2mと等価です。 \ e [0mは色をデフォルトにし、前のすべての\ e [.. m個のシーケンスを忘れる。\ e [34m \ e [0mは\ e [0m。独立した属性がいくつかあります(太字、背景の色、前景/文字の色)。エスケープシーケンスの各数字は、そのうちの1つだけに影響します。したがって、\ e [1m \ e [35mは\ e [1; 35mではなく、\ e [35; 1mも\ e [35m;しかし、\ e [34m \ e [35mは両方とも同じattirbute(すなわち、文字/前景の色)に影響を与えるので、\ e [35mと等価です。
ソリューションで最初に刺し:ここ
はegrepのバージョンですcolorgcc | less -R +/regexp'を指定します。 'less -R'はカラーコードを理解し、その周辺を検索します。 – nneonneo