Estou executando algum código de teste de unidade. O código do teste de unidade gera texto normal. Há muito texto, por isso quero destacar para as palavras-chave importantes do usuário.
Nesse caso, as palavras-chave são "PASS" e "FAIL".
Como você define "PASS" como verde e "FAIL" como vermelho?
bash
shell-script
scripting
colors
Trevor Boyd Smith
fonte
fonte
Respostas:
supercat
parece fazer o que você está procurando.Não parece haver nenhuma maneira de dizer o que colorir na linha de comando, você precisa especificar um arquivo de configuração.
Lembro-me de que costumava haver um programa chamado 'hilite' ou 'hl' que realçava o texto que correspondia a um padrão (como
grep --colour
, mas também exibe linhas não correspondentes), mas não o encontrei quando o procurei.Finalmente, o GNU
grep
pode ser usado para destacar padrões - mas apenas uma cor pode ser usada (ou seja, você não pode ter PASS em verde e FAIL em vermelho, ambos seriam destacados com a mesma cor).Canalize seus dados através de algo como isto:
Este exemplo usa egrep (aka
grep -E
), mas-G
regexp básico,-F
string fixa e-P
PCRE também funcionam.Todas as partidas serão destacadas. O padrão é vermelho ou configure a var. Env GREP_COLOR.
A chave para este trabalho é que a final
|$
no padrão corresponde ao final da linha (ou seja, todas as linhas correspondem), para que todas as linhas sejam exibidas (mas não coloridas).O
\b
são marcadores de limite de palavras para que ele corresponda por exemplo falhar, mas não FALHA. eles não são necessários; portanto, remova-os se desejar corresponder a palavras parciais.Aqui está o exemplo de script wrapper para supercat que escrevi ontem. Funciona, mas, ao escrevê-lo, descobri que o supercat não tem nenhuma opção para pesquisas que não diferenciam maiúsculas de minúsculas. IMO, isso torna o programa significativamente menos útil. No entanto, simplificou bastante o script, porque não precisei escrever uma opção '-i' :)
fonte
supercat
pode modificar o script publicado para gerar um arquivo de configuração temporário com base nos argumentos da linha de comando e, em seguida, chamarspc -c /path/to/your/temp/config
. Isso permitiria especificar facilmente cores diferentes para diferentes padrões na linha de comando.Aqui está um script de uso geral para colorir padrões de regex (provavelmente precisa de retoques):
Nomeie-o
hilite.sh
e use-o desta maneira:fonte
community wiki
porque minha solução não funciona.$BIN
viaeval
na substituição de comandos é provavelmente frágil, complicado e absolutamente perigoso. STDOUT é um fluxo e geralmente deve ser processado por ferramentas como fluxo. Tentar capturar um fluxo inteiro em uma variável não é muito eficiente. Além disso,eval
é perigosamente poderoso , portanto, use-o apenas se você realmente souber o que está fazendo.A incorporação de cadeias arbitrárias (como
tput
saída) emsed
expressões de substituição é problemática, pois é necessário garantir (escapando) que a cadeia seja desed
sintaxe válida , o que evita mais complexidade. Eu usaria em seuawk
lugar. Apenas como exemplo:A chave é atribuir as
tput
seqüências àsawk
variáveis, feitas aqui usando as-v
opções.fonte
awk
script consiste em um conjunto de blocos (as coisas entre o{}
nível superior). Cada bloco está associado a uma condição - no meu post acima, não há nenhum porque quero agir incondicionalmente em todas as linhas de entrada. O Awk opera lendo registros de arquivos ou de entrada padrão (neste caso, é STDIN b / c, nenhum nome de arquivo foi fornecido) e os associa a cada bloco na ordem, executando o bloco no registro, se a condição corresponder.use printf:
por exemplo.
o último
\n
adiciona o caractere de nova linha.para ver os possíveis valores de tentar algo como:
além da cor, você pode adicionar modificadores como negrito, sublinhado ou texto colorido com fundo colorido combinando os números. Para criar texto azul com fundo cinza sublinhado e marcado através do uso:
Felicidades,
/ B2S
fonte
Se você estiver feliz em instalar um script BASH e
ack
, ohhlighter
pacote tiver cores padrão úteis e uma interface fácil https://github.com/paoloantinori/hhighlighter :Você pode usá-lo assim para destacar as linhas que começam com
FAIL
:ou que contenham
FAIL
:ou para várias entradas de log comuns:
E, claro, para uma única cor (vermelho) com grep simples:
A
^
corresponde a cada linha, mas é uma correspondência especial e imprime a linha inteira. A expressão a ser destacada é definida após a|
. Expressões adicionais podem ser adicionadas desde que separadas|
.fonte