Come utilizzare awk
per mostrare solo le linee +
e -
, tenendo conto di qualsiasi colore o formattazione del testo git diff
potrebbe 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 awk
linguaggio 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 config
impostazioni . 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 less
cercapersone 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 q
usa ( -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 diffn
e relativi commenti: https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/useful_scripts/git-diffn.sh
- Se vuoi
git diffn
anche, che è git diff
con 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 diffc
invece! Supporta TUTTE le opzioni. Il colore è ON per impostazione predefinita. Per disattivarlo, utilizzare semplicemente git diffc --no-color
o git diffc --color=never
. Vedi man git diff
per i dettagli.
Da quando ho appena finito git diffn
(uno strumento per mostrare git diff
con line 'n'umbers) ieri sera, scrivere è git diffc
stato 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-diffn
nelle istruzioni, usa git-diffc
invece. Ciò include anche nel wget
comando. Scaricare e installare git diffc
è semplice: bastano pochi comandi.