awkबस लाइनों +और -लाइनों को दिखाने के लिए कैसे उपयोग करें , किसी भी रंग या पाठ स्वरूपण के लिए लेखांकन git diffआउटपुट हो सकता है:
यहाँ अन्य उत्तरों में से एक भी नहीं ( मेरे अन्य उत्तर सहित ) ठीक वही होगा जो आप 100% सही ढंग से चाहते हैं। हालाँकि, यह उत्तर होगा। यहां 1-लाइनर है जिसे आप अपने टर्मिनल में कॉपी और पेस्ट कर सकते हैं। मैंने इसे केवल पठनीयता के लिए कई पंक्तियों में बनाया है - आप इसे उसी तरह से कॉपी-पेस्ट कर सकते हैं ताकि मैं इसे पठनीय बना सकूं! यह awkप्रोग्रामिंग भाषा पर निर्भर करता है :
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
यहां इसकी विशेषताएं हैं। इन सभी सुविधाओं को, जब एक साथ लिया जाता है, तो हर दूसरे उत्तर की कमियों को हल करें:
- यह रंग और कोई रंग उत्पादन संभालती है। यही वह नियमित अभिव्यक्ति करता है:
^(\033\[(([0-9]{1,2};?){1,10})m)?
- यह बोल्ड, इटैलिक्स, स्ट्राइकथ्रू, आदि सहित सभी रंगों और सभी पाठ प्रारूप विकल्पों को संभालता है, जिन्हें आप अपनी
git configसेटिंग्स में सेट कर सकते हैं । यही कारण है कि ऊपर रेगेक्स में ;?और {1,10}इसमें है: यदि यह एक रंग या पाठ प्रारूपण कोड की शुरुआत का पता लगाता है, तो यह इन संयुक्त ANSI कोड के 10 अनुक्रमों तक मेल खाएगा।
इसमें उन पंक्तियों को भी शामिल नहीं किया गया है जो शुरू @@और शब्द के साथ होती हैं diff, जैसा कि स्वीकृत उत्तर करता है। यदि आप उन पंक्तियों को चाहते हैं (जो काफी स्पष्ट रूप से, मुझे लगता है कि उपयोगी हैं :)), इसके बजाय ऐसा करें:
git diff --unified=0
या
git diff -U0
यह आउटपुट को ठीक उसी तरह दिखाता है जैसे git diff: lessपेजर में वैकल्पिक रंग आउटपुट ( -R) के साथ होता है, और केवल तभी जब टेक्स्ट> 1 पेज ( -F) हो, और qयूआईटी ( -X) के समय स्क्रीन पर टेक्स्ट के वर्तमान पेज को बनाए रखते हुए। ।
यह भी शक्तिशाली और आसानी से विन्यास होने का लाभ है क्योंकि यह awk प्रोग्रामिंग भाषा का उपयोग करता है।
यदि आप जाग सीखने में रुचि रखते हैं , तो यहां कुछ संसाधन हैं:
gawk(GNU awk) मैनुअल: https://www.gnu.org/software/gawk/manual/html_node/index.html#SEC_Contents
- अध्ययन
git diffnऔर उसमें दी गई टिप्पणियाँ: https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/useful_scripts/git-diffn.sh
- यदि आप
git diffnभी चाहते हैं, जो git diffलाइन नंबरों के साथ है, तो यहां देखें: लाइन नंबरों के साथ अंतर करें (लाइन नंबरों के साथ प्रवेश करें)
- कुछ awk "हैलो दुनिया" और वाक्यविन्यास परीक्षण उदाहरण: https://github.com/ElectricRCAircraftGuy/eRCaGuy_hello_world/tree/master/awk
एक बोनस के रूप में, मैं ऊपर के रूप में इस्तेमाल किया जा सकता है git diffc, जिसका अर्थ है "केवल 'c'hanges दिखाने के लिए अंतर"। उपयोग के समान है git diff; git diffcइसके बजाय बस का उपयोग करें ! यह सभी विकल्पों का समर्थन करता है। डिफ़ॉल्ट रूप से रंग चालू है। इसे बंद करने के लिए, बस का उपयोग करें git diffc --no-colorया git diffc --color=never। man git diffविवरण के लिए देखें।
चूँकि मैंने कल रात को लाइन (n 'के साथ git diffnदिखाने के लिए एक उपकरण git diff) समाप्त किया था, लेखन git diffcतुच्छ था। मुझे लगा कि अब मैं इसे बेहतर कर सकता हूं जबकि ज्ञान मेरे दिमाग में ताजा है।
स्थापित करें git diffc:
इस उत्तर के अंत में दिए गए निर्देशों का पालन करें , सिवाय git-diffnनिर्देशों के कि आप हर जगह देखें , git-diffcइसके बजाय उपयोग करें । इसमें wgetकमांड भी शामिल है। डाउनलोड करना और इंस्टॉल git diffcकरना आसान है: यह केवल कुछ कमांड है।