3 से अधिक शब्दों वाली लाइनें निकालें?


-1

मैं नोटपैड ++ में 3 से अधिक शब्दों के साथ लाइनों को हटाने की कोशिश कर रहा हूं। मुझे Google पर "शब्द" के लिए अभिव्यक्ति नहीं मिल रही है, और मैं "वर्णों की संख्या" का उपयोग नहीं कर सकता क्योंकि यह संभव नहीं होगा।


1
क्या आप इसे विंडोज पर चला रहे हैं? क्या संस्करण? या यह कुछ और है?
एमडीपी

क्या आप विशेष रूप से नोटपैड ++ समाधान के लिए देख रहे हैं, या आप अन्य विकल्पों को स्वीकार करेंगे? यह कार्य कई स्क्रिप्टिंग भाषाओं के साथ कठिन नहीं होगा।
Maqleod

@ mdpc मैं इसे विंडोज 7 64 बिट पर चला रहा हूं, नोटपैड ++ v6.5.5 है।
माइकल डेल्वेगे

@MaQleod अन्य विकल्प तब तक ठीक हैं जब तक वे मुश्किल नहीं हैं।
माइकल डेल्वेगे

यहां बताया गया है कि आप इसे PowerShell में कैसे कर सकते हैं:gc in.txt | ? { ($_ -split "\s").Count -le 3 } | sc out.txt
ख़तरनाक

जवाबों:


2

नोटपैड ++ में, आप निम्न नियमित अभिव्यक्ति के साथ एक खोज-प्रतिस्थापन कर सकते हैं: खोजें क्या: के ^\S+[ \t]+\S+[ \t]+\S+.*(\r\n)? साथ बदलें: (कुछ नहीं)

"नियमित रूप से अभिव्यक्ति" के लिए खोज मोड "चारों ओर लपेटें" को अन-चेक करें।

व्याख्या की:

लीडिंग का ^मतलब है लाइन की शुरुआत।

\Sगैर-व्हाट्सएप पात्रों से मेल खाता है; इसलिए \S+लगातार गैर-व्हाट्सएप वर्णों अर्थात शब्दों से मेल खाता है।

[ \t]+ शब्द सीमाओं के रूप में स्पेस (एस) और टैब से मेल खाता है।

.*किसी भी वर्ण का मतलब है; हमारे सामने तीन शब्द हैं पहले से ही हम बस एक नई लाइन तक पहुंचने तक सब कुछ शामिल करते हैं।

\r\n विंडोज फ़ाइलों के लिए नई लाइन का मतलब है।


तो शब्दों की संख्या के लिए वास्तव में 3 (3) कहाँ जाता है?
माइकल डेल्वेगे

सादगी के लिए मैंने नियमित अभिव्यक्ति को हार्ड कोडित किया। आप देखेंगे कि पैटर्न \S+को 3 बार दोहराया जाता है, उनमें से प्रत्येक को [ \t]+पैटर्न द्वारा अलग किया जाता है। यदि आप इसे और अधिक लचीला बनाना चाहते हैं, तो आप उस हिस्से में संशोधन कर सकते हैं (\S+[ \t]+){2}\S+{2}इसका मतलब है कि पिछले पैटर्न को दो बार दोहराए गए कोष्ठक में, अंतिम जोड़कर \S+इसे तीन बना दिया।
केनेथ एल

1
से मार्कोव : \ r \ n Windows फ़ाइलों के लिए नई लाइन का मतलब है। यदि आपकी फ़ाइल उदाहरण के लिए UTF8 (शायद आज सबसे आम) के रूप में एन्कोडेड है, तो लाइन ब्रेक केवल \ n (not \ r \ n) होगा। इसलिए केनेथ का कोड बनना चाहिए:^\S+[ \t]+\S+[ \t]+\S+.*(\n)
fixer1234

0

क्या मैं इसमें योगदान दूं? जैसा कि केनेथ ने कहा, \ r \ n का अर्थ है विंडोज फ़ाइलों के लिए नई लाइन। यदि आपकी फ़ाइल उदाहरण के लिए UTF8 (शायद आज सबसे आम) के रूप में एन्कोडेड है, तो लाइन ब्रेक केवल \ n (not \ r \ n) होगा। इसलिए केनेथ का कोड बनना चाहिए:

^\S+[ \t]+\S+[ \t]+\S+.*(\n)

यह अच्छी पोस्ट नहीं है। आपके सभी परिवर्तन अन्य पद के उपयोग को सीमित कर रहे हैं।
डेव

समाधान के लिए उत्तर दिए गए हैं। एक और उत्तर की चर्चा एक टिप्पणी में जानी चाहिए। मैंने आगे बढ़कर इसे आपके लिए एक टिप्पणी के रूप में कॉपी किया। आप इस पोस्ट को हटाना चाह सकते हैं ताकि यह डाउनवोट्स को आकर्षित न करे।
फिक्सर 1234

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