Há uma pergunta semelhante em Preserve ls colouring após grep'ing, mas me incomoda que, se você colocar a saída grep colorida em outro grep, a cor não será preservada.
Como exemplo grep --color WORD * | grep -v AVOID
, não mantém a cor da primeira saída. Mas, para mim ls | grep FILE
, mantenho a cor, por que a diferença?
Respostas:
grep
Às vezes, desativa a saída colorida, por exemplo, ao gravar em um tubo. Você pode substituir esse comportamento porgrep --color=always
A linha de comando correta seria
Isso é bem detalhado, ou você pode adicionar a linha
à sua
.bashrc
, por exemplo, e usocgrep
como o grep colorido. Ao redefinir,grep
você pode ter problemas com scripts que dependem de saída específicagrep
e não gostam de código de escape ascii.fonte
grep
.alias grep='grep --color=auto
então eu preciso alterar meu local~/.bashrc
onde foi definido em primeiro lugar.Uma palavra de conselho:
Ao usar
grep --color=always
, as cadeias reais sendo passadas para o próximo tubo serão alteradas. Isso pode levar à seguinte situação:Mesmo que a opção
-ve '12'
deva excluir a linha do meio, não será porque existem caracteres coloridos entre1
e2
.fonte
--color=auto
, deve entender o fato de que você o está direcionando para outro lugar e suprimir completamente as cores, mas isso derrota o objetivo. Se você ainda deseja resultados coloridos, acho que você pode cumprimentá-lo novamente no último tubo usando--color
.--color=always
funciona, com, eu assumo, as advertências mencionadas acima.Simplesmente repita o mesmo comando grep no final do seu pipe.
grep WORD * | grep -v AVOID | grep -v AVOID2 | grep WORD
fonte
grep -v AVOID * | grep WORD