टर्मिनल आउटपुट में लाइनों की संख्या की गणना करें


264

एसओ पर यह नहीं मिला। मैंने टर्मिनल में निम्न कमांड चलाई:

>> grep -Rl "curl" ./

और यह उन फ़ाइलों की सूची प्रदर्शित करता है जहाँ कीवर्ड कर्ल होता है। मैं फाइलों की संख्या गिनना चाहता हूं। पहला तरीका जो मैं सोच सकता हूं, वह यह है कि टर्मिनल में आने वाले आउटपुट में लाइनों की संख्या की गणना करना। मैं उसे कैसे कर सकता हूँ?


40
grep में स्वयं भी -cध्वज होता है जो सिर्फ गिनती करता है
EaterOfCode

जवाबों:


475

( लाइन काउंट ) स्विच wcका उपयोग करने के लिए परिणाम को पाइप करें:-l

grep -Rl "curl" ./ | wc -l

1
मैं का उपयोग कर रहा हूँ, grep "" -cलेकिन यह कुछ बहुत अच्छा है :)
Ninhenzo64

3
यह ध्यान दिया जाना चाहिए कि wc को पाइप करने का यह ट्रिक किसी भी आउटपुट के लिए काम करेगा, न कि केवल grep आउटपुट के लिए। उदाहरण के लिए, इसे गिट अंतर के साथ जोड़ा जा सकता है।
जेसन एल।

1
यह स्वीकृत उत्तर क्यों है? जैसा कि कुछ टिप्पणियों ने उल्लेख किया है कि निर्माण grep -cको दूसरे प्रोग्राम में पाइप करने के बजाय फ़ंक्शन का निर्माण किया जाना चाहिए। उदाहरण के लिए, आप अपने वर्ड डॉक्यूमेंट में अक्षरों को वर्ड के अलावा किसी अन्य टेक्स्ट एडिटर के साथ नहीं बदलेंगे?
माइकल पी

57

उत्तर के रूप में इटरऑफकोड की टिप्पणी को यहां रखा गया है।

grep में स्वयं -c ध्वज भी होता है, जो केवल गिनती को लौटाता है

ताकि कमांड और आउटपुट इस तरह दिख सके।

$ grep -Rl "curl" ./ -c
24

संपादित करें:

हालाँकि यह उत्तर छोटा हो सकता है और इस प्रकार स्वीकृत उत्तर (जो उपयोग कर रहा है wc) से बेहतर लग सकता है । मैं अब इससे सहमत नहीं हूं। मुझे यह याद रखना पसंद है कि आप लाइनों को पाइपिंग द्वारा गिन wc -lसकते हैं यह बहुत अधिक उपयोगी है क्योंकि आप इसे अन्य कार्यक्रमों के साथ भी उपयोग कर सकते हैं grep


5

'Wc' को पाइप करना बेहतर हो सकता है यदि अंतिम पंक्ति एक नई रेखा के साथ समाप्त होती है (मुझे पता है कि इस मामले में, यह होगा)
, हालांकि, यदि अंतिम पंक्ति एक नई पंक्ति के साथ समाप्त नहीं होती है तो 'wc -l' एक गलत परिणाम देता है।

उदाहरण के लिए:

$ echo "asd" | wc -l

लौटेगा 1और

$ echo -n "asd" | wc -l

वापस होगा 0


तो जो मैं अक्सर उपयोग करता हूं वह है grep <anything> -c

$ echo "asd" | grep "^.*$" -c
1

$ echo -n "asd" | grep "^.*$" -c
1

यह वास्तविकता के करीब है कि क्या wc -lवापस आएगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.