Cómo usar awkpara mostrar solo las líneas +y -, teniendo en cuenta cualquier color o formato de texto, git diffse puede generar:
Ninguna de las otras respuestas aquí (incluida mi otra respuesta ) hará exactamente lo que quieres 100% correctamente. Esta respuesta, sin embargo, lo hará. Aquí hay un 1-liner que puede copiar y pegar en su terminal. Acabo de hacer varias líneas para facilitar la lectura: puede copiarlo y pegarlo de la misma manera, ¡así que podría hacerlo legible! Se basa en el awklenguaje de programación:
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
Aquí están sus características. Todas estas características, cuando se toman juntas, resuelven las deficiencias de cualquier otra respuesta aquí:
- Maneja la salida de color Y sin color. Eso es lo que hace esta expresión regular:
^(\033\[(([0-9]{1,2};?){1,10})m)?
- Maneja TODOS LOS COLORES y TODAS LAS OPCIONES DE FORMATO DE TEXTO, incluyendo negrita, cursiva, tachado, etc., que puede configurar en su
git configconfiguración . Es por eso que la expresión regular anterior tiene;? y {1,10}en ella: si detecta el inicio de un código de formato de color o texto, coincidirá con hasta 10 secuencias de estos códigos ANSI combinados.
NO incluye líneas que comienzan con @@la palabra diff, como lo hace la respuesta aceptada . Si desea esas líneas (que francamente, creo que son útiles :)), haga esto en su lugar:
git diff --unified=0
o
git diff -U0
Muestra la salida de la misma manera que lo git diffharía: en el lessbuscapersonas con salida de color opcional ( -R), y solo si el texto es> 1 página ( -F), y al mismo tiempo que retiene la página de texto actual en la pantalla cuando qusa ( -X) .
También tiene la ventaja de ser potente y fácil de configurar, ya que utiliza el lenguaje de programación awk.
Si está interesado en aprender awk , aquí hay algunos recursos:
gawk(GNU awk) manual: https://www.gnu.org/software/gawk/manual/html_node/index.html#SEC_Contents
- Estudio
git diffny los comentarios allí: https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/useful_scripts/git-diffn.sh
- Si lo desea
git diffntambién, que es git diffcon números de línea, consulte aquí: Git diff con números de línea (Git log con números de línea)
- Algunos ejemplos de prueba de sintaxis y "hello world" de awk: https://github.com/ElectricRCAircraftGuy/eRCaGuy_hello_world/tree/master/awk
Como git diffcbeneficio adicional, también envolví lo anterior para usarlo , lo que significa "git diff para mostrar SOLO 'cambios'". El uso es idéntico a git diff; solo use git diffcen su lugar! Es compatible con TODAS las opciones. El color está activado por defecto. Para apagarlo, simplemente use git diffc --no-coloro git diffc --color=never. Ver man git diffpara más detalles.
Desde que acabo de terminar git diffn(una herramienta para mostrargit diff con líneas y números) anoche, escribir git diffcfue trivial. Pensé que sería mejor hacerlo ahora mientras el conocimiento está fresco en mi cabeza.
Instalar en pc git diffc :
Siga las instrucciones al final de esta respuesta aquí , excepto en todas partes que vea git-diffnen las instrucciones, use git-diffcen su lugar. Eso incluye en el wgetcomando también. Descargar e instalar git diffces fácil: solo son unos pocos comandos.