गिरीप के साथ मैच की कुल संख्या को गिनने के बजाय सिर्फ कितनी लाइनों से मेल खाता है


29

क्या grep इसके द्वारा किए जाने वाले मैचों की कुल संख्या की गणना करने का एक तरीका प्रदान करता है? -C विकल्प केवल उन पंक्तियों की संख्या लौटाता है जो रेगेक्स से मेल खाती हैं, लेकिन इस मामले में मेरे पास प्रति पंक्ति कई मैच हैं।

जवाबों:


29

इसे इस्तेमाल करे:

grep -o -E "your expression" file |wc -l

ठीक है, -E सिर्फ एक उदाहरण है, यह -P हो सकता है, -F आदि बिंदु -o है

परीक्षा:

kent$  echo "abc xxx yyy"|grep -cP "[a-z]{3}"      
1

kent$  echo "abc xxx yyy"|grep -oP "[a-z]{3}"|wc -l
3

8

एक -o झंडा है जो इंगित करता है कि लाइन के केवल मिलान किए गए उपधारा को मुद्रित किया जाना चाहिए।

Wc -l के साथ संयोजन में इसका उपयोग करें:

grep -o "part of line" | wc -l

आदमी grep यह भी बताते हैं।


1

अन्य उत्तरों के विकल्प के रूप में, सिर्फ grep का उपयोग करते हुए:

grep -o "seach pattern" somefile.txt | grep -c ""

पहले grep में -o प्रत्येक मैच का आउटपुट देता है, और सिर्फ मैच - पूरी लाइन नहीं (जब तक कि पूरी लाइन मैच न हो, निश्चित रूप से)। दूसरे-grep में -c को फिर उन्हें गिना जाता है।

यह टाइप करने के लिए कुछ और अक्षर हैं (जैसे, 4 या 5), लेकिन मुझे याद रखना आसान है।

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