Come utilizzare awkper mostrare solo le linee +e -, tenendo conto di qualsiasi colore o formattazione del testo git diffpotrebbe essere in uscita:
Nessuna delle altre risposte qui (inclusa la mia altra risposta ) farà esattamente quello che vuoi correttamente al 100%. Questa risposta, tuttavia, lo farà. Ecco un 1-liner che puoi copiare e incollare nel tuo terminale. Ho appena creato più righe per leggibilità: puoi copiarlo e incollarlo nello stesso modo in modo che io possa anche renderlo leggibile! Si basa sul awklinguaggio di programmazione:
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
Ecco le sue caratteristiche. Tutte queste caratteristiche, se messe insieme, risolvono le carenze di ogni altra risposta qui:
- Gestisce output a colori e senza colori. Ecco cosa fa questa espressione regolare:
^(\033\[(([0-9]{1,2};?){1,10})m)?
- Gestisce TUTTI I COLORI e TUTTE LE OPZIONI DI FORMATTAZIONE DEL TESTO, tra cui grassetto, corsivo, barrato, ecc., Che è possibile impostare nelle
git configimpostazioni . Ecco perché la regex sopra ha ;?e {1,10}in essa: se rileva l'inizio di un codice di formattazione di colore o testo, corrisponderà a un massimo di 10 sequenze di questi codici ANSI combinati.
NON include anche le righe che iniziano con @@e la parola diff, come fa la risposta accettata . Se vuoi quelle righe (che francamente, penso che siano utili :)), invece fai questo:
git diff --unified=0
o
git diff -U0
Mostra l'output nello stesso modo esatto git diff: nel lesscercapersone con output a colori opzionale ( -R), e solo se il testo è> 1 pagina ( -F) e mantenendo la pagina corrente di testo sullo schermo quando si qusa ( -X) .
Ha anche il vantaggio di essere potente e facilmente configurabile poiché utilizza il linguaggio di programmazione awk.
Se sei interessato a imparare awk , ecco alcune risorse:
gawk(GNU awk) manuale: https://www.gnu.org/software/gawk/manual/html_node/index.html#SEC_Contents
- Studio
git diffne relativi commenti: https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/useful_scripts/git-diffn.sh
- Se vuoi
git diffnanche, che è git diffcon i numeri di riga, vedi qui: Git diff con i numeri di riga (Git log con i numeri di riga)
- Alcuni esempi di test "hello world" e di sintassi: https://github.com/ElectricRCAircraftGuy/eRCaGuy_hello_world/tree/master/awk
Come bonus, ho anche concluso quanto sopra da usare come git diffc, il che significa "git diff per mostrare SOLO 'c'hanges". L'uso è identico a git diff; basta usare git diffcinvece! Supporta TUTTE le opzioni. Il colore è ON per impostazione predefinita. Per disattivarlo, utilizzare semplicemente git diffc --no-coloro git diffc --color=never. Vedi man git diffper i dettagli.
Da quando ho appena finito git diffn(uno strumento per mostrare git diffcon line 'n'umbers) ieri sera, scrivere è git diffcstato banale. Ho pensato che sarebbe meglio farlo ora mentre la conoscenza è fresca nella mia testa.
Installa git diffc:
Segui le istruzioni alla fine di questa risposta qui , tranne che ovunque tu veda git-diffnnelle istruzioni, usa git-diffcinvece. Ciò include anche nel wgetcomando. Scaricare e installare git diffcè semplice: bastano pochi comandi.