Cómo usar awk
para mostrar solo las líneas +
y -
, teniendo en cuenta cualquier color o formato de texto, git diff
se 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 awk
lenguaje 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 config
configuració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 diff
haría: en el less
buscapersonas 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 q
usa ( -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 diffn
y los comentarios allí: https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/useful_scripts/git-diffn.sh
- Si lo desea
git diffn
también, que es git diff
con 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 diffc
beneficio 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 diffc
en su lugar! Es compatible con TODAS las opciones. El color está activado por defecto. Para apagarlo, simplemente use git diffc --no-color
o git diffc --color=never
. Ver man git diff
para más detalles.
Desde que acabo de terminar git diffn
(una herramienta para mostrargit diff
con líneas y números) anoche, escribir git diffc
fue 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-diffn
en las instrucciones, use git-diffc
en su lugar. Eso incluye en el wget
comando también. Descargar e instalar git diffc
es fácil: solo son unos pocos comandos.
git diff | egrep "^(\+|-) "
.git config --global diff.context 0
tenerlo configurado globalmente