पाठ फ़ाइल में शब्द की गणना


31

मेरे पास एक टेक्स्ट फाइल है जिसमें ट्वीट हैं और मुझे ट्वीट में एक शब्द का उल्लेख करने की संख्या की गणना करने की आवश्यकता है। उदाहरण के लिए, फ़ाइल में है:

Apple iPhone X is going to worth a fortune
The iPhone X is Apple's latest flagship iPhone. How will it pit against it's competitors?

और मान लें कि मैं गिनना चाहता हूं कि फ़ाइल में iPhone शब्द का कितनी बार उल्लेख किया गया है। तो यहाँ मैंने क्या कोशिश की है।

cut -f 1 Tweet_Data | grep -i "iPhone" | wc -l

यह निश्चित रूप से काम करता है, लेकिन मैं यूनिक्स में 'wc' कमांड के बारे में उलझन में हूं। अगर मैं कुछ करने की कोशिश करूं तो क्या फर्क पड़ता है:

cut -f 1 Tweet_Data | grep -c "iPhone"

जहाँ -c का उपयोग इसके बजाय किया जाता है? इन दोनों के ट्वीट से भरी एक बड़ी फ़ाइल में अलग-अलग परिणाम मिलते हैं और मैं उलझन में हूं कि यह कैसे काम करता है। घटना को गिनने का सही तरीका कौन सा है?


cut -f1टैब पर आधारित है, जो यहां बहुत कुछ नहीं कर रहा है। क्या आप वाकई wc -lसही गिनती दे रहे हैं? यह यहां 2 दिखाएगा, लेकिन मैं "iPhone" के 3 उदाहरणों को गिनता हूं।
जेफ स्कालर


इसके अलावा समान: unix.stackexchange.com/q/60727/117549
जेफ स्कॉलर

जवाबों:


54

ऐसी आवश्यकता को देखते हुए, मैं एक GNU grep ( -oविकल्प के लिए ) का उपयोग करूँगा , फिर इसे wcहोने वाली कुल संख्या की गणना करने के लिए पास करूँगा :

$ grep -o -i iphone Tweet_Data | wc -l
3

grep -cडेटा पर सादा मिलान करने वाले शब्दों की कुल संख्या नहीं, बल्कि उन रेखाओं की गिनती करेगा जो मिलान करते हैं। विकल्प का उपयोग करने से प्रत्येक मैच को लाइन पर आउटपुट करने के लिए grep बताता है, चाहे वह मैच कितनी बार लाइन में हो।-o

wc -lwcलाइनों की संख्या गिनने की उपयोगिता बताती है । जीआरईपी प्रत्येक मैच को अपनी लाइन में रखने के बाद, इनपुट में शब्द की कुल संख्या होती है।


यदि GNU grep उपलब्ध नहीं है (या वांछित), आप इनपुट को इस तरह बदल सकते हैं trकि प्रत्येक शब्द अपनी लाइन पर हो, फिर grep -cगणना करने के लिए उपयोग करें:

$ tr '[:space:]' '[\n*]' < Tweet_Data | grep -i -c iphone
3

1

सबसे आसान तरीका है,

grep -wc "your_text" FileName

तुम्हारे लिए यह हो जाएगा,

grep -wc "iPhone" Tweet_Data

बहुत साफ जवाब हालांकि अगर आप 'कूल' जैसे शब्द का मिलान कर रहे हैं तो आप केवल कूल से मेल खाएंगे और कैकॉल नहीं होंगे इसलिए इस बात का ध्यान रखें कि शब्द के चारों ओर रिक्त स्थान हो।
जसोनलोनहार्ड

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