Basicamente, eu tenho um arquivo cujas linhas eu quero colorir com cores diferentes se corresponder a 1 de 2 expressões regulares com o grep. Se regexp1 for correspondido, use uma cor; Se regexp2 for correspondido, use outro.
No entanto, cores grep com uma cor de cada vez, então o que eu gostaria de fazer é canalizar a saída do grep para outra instrução grep com uma cor diferente.
No entanto, a cor grep é controlada com uma variável de ambiente GREP_COLOR (isso é obsoleto em favor de GREP_COLORS, mas não funcionou no Windows, portanto estou usando GREP_COLOR)
Assim, o arquivo em lote será parecido com isto:
@echo off
setlocal
set GREP_COLOR=06;32
echo GREEN RED OTHER | grep --color=always --line-buffered "GREEN" | grep --color=always -E "RED"
endlocal
Como posso alterar o GREP_COLOR para a segunda chamada do grep?
Eu tenho ele trabalhando com 2 arquivos em lote, mas tem que haver uma maneira de fazer isso com um único arquivo de lote:
ctest1.bat:
@echo off
setlocal
set GREP_COLOR=06;32
echo GREEN RED OTHER | grep --color=always --line-buffered "GREEN" | ctest2.bat
endlocal
ctest2.bat:
@echo off
setlocal
set GREP_COLOR=01;31
grep --color=always -E "RED"
endlocal
Alguma ideia? Parece que deve ser simples, mas eu perdi boas 2 horas tentando transformá-lo em um arquivo de lote sem sucesso.