Como usar awkpara mostrar apenas as linhas +e -, respondendo por qualquer forma de cor ou texto, git diffpode estar gerando:
Nenhuma das outras respostas aqui (incluindo minha outra resposta ) fará exatamente o que você deseja 100% corretamente. Esta resposta, no entanto, será. Aqui está um liner que você pode copiar e colar no seu terminal. Acabei de criar várias linhas para facilitar a leitura - você pode copiar e colar da mesma maneira para que eu possa torná-lo legível! Ele se baseia na awklinguagem de programação:
git diff --color=always "$@" | awk '
# 1. Match and then skip "--- a/" and "+++ b/" lines
/^(\033\[(([0-9]{1,2};?){1,10})m)?(--- a\/|\+\+\+ b\/)/ {
next
}
# 2. Now print the remaining "+" and "-" lines ONLY! Note: doing step 1 above first was required or
# else those lines would have been matched by this matcher below too since they also begin with
# the "+" and "-" symbols.
/^(\033\[(([0-9]{1,2};?){1,10})m)?[-+]/ {
print $0
}
' | less -RFX
Aqui estão suas características. Todos esses recursos, quando considerados em conjunto, resolvem as deficiências de todas as outras respostas aqui:
- Ele lida com saída colorida e sem cores. É isso que essa expressão regular faz:
^(\033\[(([0-9]{1,2};?){1,10})m)?
- Ele lida com TODAS AS CORES e TODAS AS OPÇÕES DE FORMATAÇÃO DE TEXTO, incluindo negrito, itálico, tachado, etc., que você pode definir nas suas
git configconfigurações . É por isso que o regex acima tem ;?e {1,10}nele: se detectar o início de uma cor ou código de formatação de texto, ele irá corresponder a até 10 seqüências de estes códigos ANSI combinados.
NÃO inclui também linhas que começam com @@a palavra diff, como a resposta aceita . Se você deseja essas linhas (que, francamente, acho úteis) :), faça o seguinte:
git diff --unified=0
ou
git diff -U0
Ele mostra a saída da mesma maneira exata que git difffaria: no lesspager com saída em cores opcional ( -R), e somente se o texto for> 1 página ( -F), e mantendo a página atual do texto na tela quando você qusar ( -X) .
Ele também tem o benefício de ser poderoso e facilmente configurável, pois usa a linguagem de programação awk.
Se você estiver interessado em aprender o awk , veja alguns recursos:
gawkawkManual (GNU ): https://www.gnu.org/software/gawk/manual/html_node/index.html#SEC_Contents
- Estudo
git diffne comentários: https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/useful_scripts/git-diffn.sh
- Se você quiser
git diffntambém, que é git diffcom números de linha, veja aqui: Git diff com números de linha (log do Git com números de linha)
- Alguns exemplos de teste do awk "olá mundo" e de sintaxe: https://github.com/ElectricRCAircraftGuy/eRCaGuy_hello_world/tree/master/awk
Como bônus, também git diffcencerrei o item acima para ser usado como , o que significa "git diff para mostrar SOMENTE 'mudanças'". O uso é idêntico a git diff; basta usar git diffc! Ele suporta TODAS as opções. A cor está ativada por padrão. Para desligá-lo, basta usar git diffc --no-colorou git diffc --color=never. Veja man git diffpara detalhes.
Desde que eu terminei git diffn(uma ferramenta para mostrar git diffcom números e linhas) ontem à noite, a escrita git diffcfoi trivial. Achei melhor fazê-lo agora enquanto o conhecimento está fresco na minha cabeça.
Instalar git diffc:
Siga as instruções no final desta resposta aqui , exceto em todos os lugares que você vê git-diffnnas instruções, use em seu git-diffclugar. Isso inclui também no wgetcomando. Baixar e instalar git diffcé fácil: são apenas alguns comandos.