के साथ निर्देशिका में मिलान की कुल संख्या की गणना करें मैं एक बड़ी परियोजना में दिए गए स्ट्रिंग के लिए मैचों की संख्या को खोजने का प्रयास कर रहा हूं। वर्तमान में, मैं निम्न आदेश का उपयोग कर रहा ag
के साथ ऐसा करना:एजी
$ echo 0$(ag -c searchterm | sed -e "s/^.*:/+/") | bc
जो स्पष्ट रूप से थोड़ा लंबा और बहुत सहज ज्ञान युक्त नहीं है। ag
से निर्देशिका में मिलान की कुल संख्या प्राप्त करने का कोई बेहतर तरीका है? मैंने प्रलेखन के माध्यम से खोद दिया है और वहां कुछ भी उपयोगी नहीं मिला।
संपादित करें: करने के लिए एक recent commitag
के लिए धन्यवाद, फ़ाइल नाम sed
के बजाय ag
साथ छीन लिया जा सकता है, तो यह भी काम करता है:
$ echo `ag test -c --nofilename | sed "s/$/+/"`0 | bc
नोट: मुझे पता है मैं ack -hcl searchterm
के साथ ऐसा कर सकता है (खैर, लगभग मेरे विशिष्ट मामले में मुझे वहां --ignore-dir building
की भी आवश्यकता होगी), लेकिन चूंकि यह पहले से ही एक बड़ी परियोजना है (और काफी बढ़ रही है), ag
द्वारा प्रस्तावित स्पीड बूस्ट इसे बेहतर बनाता है (ack
मेरे लिए लगभग 3 सेकंड लेता है खोज बनाम ag
का लगभग तात्कालिक परिणाम), इसलिए मैं चिपकना चाहता हूं इसके साथ के।
आप कभी भी इस प्रश्न का उत्तर मिला: अग्रदर्शी साथ
फ़िल्टर सिर्फ मैचों की संख्या मुद्रित करने के लिए? – jjaderberg
@jjaderberg बिल्कुल नहीं। सबसे अच्छा विकल्प '--stats' विकल्प लगता है जिसके बाद सही रेखा को पार्स कर दिया जाता है। (उदाहरण के लिए, 'ag --stats searchterm | tail -n 5 | head -n 1')। मैंने '--stats-only' विकल्प के लिए एक पुल अनुरोध भी सबमिट किया जो मुद्रित होने से किसी और चीज को रोकता है, उस स्थिति में 'ag --stats searchterm | हेड-एन 1 'मैचों की संख्या प्राप्त करेगा। उन दोनों मामलों में आपको अभी भी संख्या प्राप्त करने के लिए "मैचों" को फ़िल्टर करने की आवश्यकता होगी। – SnoringFrog