सवाल मुझे आवश्यक शब्द वाले लाइनों को छोड़कर नोटपैड ++ में सभी पंक्तियां हटाएं?


मेरे पास एक टेक्स्ट फ़ाइल है और लाइनों को शुरू करना चाहते हैं <Path>, और अन्य सभी लाइनों को हटा दें।

मैं यह कैसे कर सकता हूं?


176
2018-05-29 15:05


मूल


सम्बंधित: stackoverflow.com/questions/8264391/... - Cees Timmerman
LineFilter2 प्लगइन का उपयोग करना भी आसान है। - Karsten


जवाब:


इसे हासिल करने का एक आसान तरीका है। आपको 3 कदम करने की जरूरत है।

  1. खोज मेनू पर जाएं> खोजें ...> "मार्क" टैब का चयन करें। नियमित अभिव्यक्ति सक्रिय करें। निम्न को खोजें ^<Path> (^ लाइन शुरू करने के लिए है)। "बुकमार्क लाइन" जांचना न भूलें और "सभी को चिह्नित करें" दबाएं

    ==> उन सभी पंक्तियों को आप बुकमार्क रखना चाहते हैं

  2. मेनू पर जाएं "खोज - बुकमार्क - उलटा बुकमार्क"

    ==> आप जिस लाइन को हटाना चाहते हैं उसे बुकमार्क किया गया है।

  3. मेनू पर जाएं "खोज - बुकमार्क - बुकमार्क की गई रेखाएं हटाएं"

    ==> सभी बुकमार्क की गई लाइनें हटा दी गई हैं।


257
2018-06-03 20:23



+1। अच्छा, इस बारे में नहीं पता था। "अनमार्कित लाइनों को निकालें" या "कट / कॉपी चिह्नित लाइनें" के विकल्प भी हैं जो कुछ समय बचा सकते हैं। - deizel
मुझे पहली बार परेशानी थी क्योंकि नोटपैड ++ के मेरे संस्करण (6.2.3) में "मार्क टैब" नामक मेनू आइटम नहीं है। इसके बजाय, आपको "खोज" -> "ढूंढें ..." पर जाना होगा -> "मार्क" टैब पर क्लिक करें। और अब आपको बुकमार्क को उलटा नहीं करना है। नोटपैड ++ में अब "अनमार्कित लाइन्स निकालें" है। लेकिन आपकी टिप ने मुझे बहुत मदद की! धन्यवाद! - Adam
आप चरण 2 को छोड़ सकते हैं, क्योंकि यह "अनमार्कित लाइन्स निकालें" चुनने के लिए संभव है (कम से कम v6.4.5)। - Nailuj
मैं इतने लंबे समय तक नोटपैड ++ का उपयोग कर रहा हूं और मुझे कभी पता नहीं चला कि पहले 'बुकमार्क' क्या हैं। आश्चर्यजनक है कि उपकरण कितना शक्तिशाली है और मुझे इसके बारे में कितना पता है। - Danubian Sailor
आप एक genious हैं। वास्तविक उपकरण के लिए उपयोग किए जाने वाले टूल को कैसे प्राप्त किया जाए, यह एक और चौंकाने वाला उदाहरण है। - Marcello Grechi Lins


यह वास्तव में 6.3 के रूप में दो चरणों में किया जा सकता है। मुझे लगता है कि इससे पहले किया जा सकता था क्योंकि मेरे पास 5.9 था जब मैंने पहली बार कोशिश की थी।

इस उत्तर के आधार के रूप में स्टेमा की पोस्ट का उपयोग करना। अब एक कम कदम है। लाइनों को चिह्नित करें और अनमार्कित लाइनों को हटा दें। किया हुआ। विस्तृत निर्देशों का पालन करें।

  1. खोज मेनू "ढूंढें"। संवाद संवाद में, "मार्क" टैब पर क्लिक करें। नियमित अभिव्यक्ति सक्रिय करें। ^ के लिए खोजें (^ लाइन शुरू करने के लिए है)। "बुकमार्क लाइन" जांचना न भूलें और "सभी को चिह्नित करें" दबाएं

    ==> उन सभी पंक्तियों को आप बुकमार्क रखना चाहते हैं

  2. खोज मेनू -> बुकमार्क -> अनमार्कित लाइनों को हटाएं।

    ==> सब गैर बुकमार्क की गई लाइनें हटा दी गई हैं।


57
2018-02-27 16:03



यह मुझे 10 सेकंड ले गया जबकि दूसरे समाधान ने मुझे 20 सेकंड लिया। धन्यवाद! - Black


स्वच्छ regex केवल समाधान

दो चरण संस्करण

  1. regex प्रतिस्थापित करें

    (?!^.*test.*$)^.+
    

    अपने अनुरोधित पाठ के साथ परीक्षण को प्रतिस्थापित करें

  2. बदलने के

    [\r\n]{2,}
    

    साथ में \r\n

एकल चरण संस्करण

उपयोग ^(?!<Path>).*\r\n खाली स्ट्रिंग वाले मैचों को प्रतिस्थापित करने के लिए। सामान्यीकृत संस्करण होगा ^(?!.*?test).*\r\nयह फ़ाइल के अंत में खाली रेखा को नहीं हटाएगा। कई अन्य लाइनें हटा दी जाती हैं, जिनमें लगातार कई खाली रेखाएं शामिल हैं।

स्पष्टीकरण:

  1. (?!) एक नकारात्मक देखो है। ^.*test.*$  अनुरोधित पाठ वाली पूरी पंक्ति का चयन करता है।

  2. [\r\n]{2,} किसी से मेल खाता है \r\n एक बार यह विंडोज़ नई लाइन होने के बाद और अधिक होता है। यदि आपके पास लिनक्स या अन्य ऑपरेटिंग सिस्टम है तो आपको इसके साथ गड़बड़ करने की आवश्यकता हो सकती है। दूसरा इसे एक रिटर्न लाइन से बदलना है।


25
2017-07-08 16:51



लोगों के लिए ध्यान दें: कभी-कभी लाइन के अंत (ईओएल) के साथ regex "काम नहीं करता"। \r\n पोस्ट में उल्लिखित ईओएल विंडोज का उपयोग करता है और इसलिए आप जो खोज रहे हैं वह हो सकता है या नहीं भी हो सकता है। अक्सर लिनक्स वातावरण पर यह बस है \n, या मैक वातावरण में बस \r, इसलिए यदि आप किसी से फ़ाइल खींचते हैं, तो यह विंडोज स्टाइल ईओएल नहीं होगा। हालांकि, अगर आप FileZilla और ASCII मोड ट्रिगर्स के माध्यम से डाउनलोड करते हैं, तो यह उन्हें बदल सकता है विंडोज ईओएल में वापस (पसंद \n में \r\n)। तो अगर रेगेक्स काम नहीं कर रहा है, तो "देखें> प्रतीकों को दिखाएं> रेखा का अंत दिखाएं" पर जाकर ईओएल शैली की जांच करें। सीआर = \r। एलएफ = \n। - dhaupin


मुझे ऐसा लगता है कि "वर्तमान दस्तावेज़ में सभी खोजें" सुविधा का उपयोग करने का सबसे आसान तरीका है और फिर या तो परिणामों को एक नई फ़ाइल में कॉपी करें या सभी का चयन करें और वर्तमान में प्रतिस्थापित करें।

यह आपके टेक्स्ट वाले सभी लाइनों को ढूंढ देगा और उन्हें नीचे सूचीबद्ध करेगा। बस खोज परिणाम और प्रतिलिपि / पेस्ट पर राइट क्लिक करें।


5
2017-12-17 11:43



आपको प्रतिस्थापित करके लाइन नंबरों को हटाना होगा \tLine [\d]*: । अभी भी एक महान जवाब है। - Noumenon


मेनू पर जाएं खोज -> खोजें ... -> नियमित अभिव्यक्ति सक्रिय करें। "^ के लिए खोजेंपथ"(^ लाइन शुरू करने के लिए है)।

"वर्तमान दस्तावेज़ में सभी खोजें" बटन पर क्लिक करें।

"परिणाम खोजें" विंडो पैटर्न की सभी पंक्तियों के साथ दिखाई देगी। नोटपैड ++ में कॉपी / पेस्ट को एक नए टैब पर पेस्ट करें।

इस नए टैब में, मेनू में मिला खोज -> बदलने के... -> नियमित अभिव्यक्ति सक्रिय करें।

"क्या खोजें:" फ़ील्ड में, पैटर्न का उपयोग करें: "रेखा \ d +:"। "रिक्त स्थान:" फ़ील्ड को खाली छोड़ दें।

"सभी को बदलें" बटन पर क्लिक करें।


4
2018-06-21 16:36





यह बताते हुए कि आप वास्तव में मेल खाना चाहते हैं <Path> और फ़ाइल सिस्टम पथ नहीं, आप पर्ल का उपयोग कर कमांड लाइन से इसे आजमा सकते हैं:

perl -pe " if ($_ !~ /<Path>/) { s/$_// } " < in.txt > out.txt

यह विंडोज़ पर स्ट्रॉबेरी पर्ल के साथ काम करता था, इसलिए तदनुसार समायोजित करें यदि परिणाम आप अपेक्षा नहीं करते हैं।


3
2018-05-30 01:02





यह बेकार है, लेकिन इसे सभी को कॉपी करें एक्सेल, और फिर उपयोग करें =IF(LEFT(A1,6)="<Path>",A1,"") और उस सूत्र को सभी तरह से कॉपी करें। फिर उसे वापस नोटपैड ++ पर कॉपी करें। यह आदर्श नहीं है, लेकिन यह बहुत आसान है (यदि आपके पास एक्सेल है)। चेतावनी: यह इंडेंट लाइनों के साथ अच्छी तरह से काम नहीं करेगा (एक्सेल कॉलम इत्यादि को बदल देगा)।


3
2018-05-29 18:07



जब इस कार्य को सीधे संभालने के कई तरीके हैं, तो आप विनाशकारी रूप से किसी अन्य एप्लिकेशन में प्रतिलिपि बनाना, प्रक्रिया करना और वापस स्थानांतरित करना क्यों चाहते हैं? - Baldrickk


नोटपैड ++ के साथ आप जो चाहते हैं उसे करने का कोई आसान तरीका नहीं है। आपको या तो अपने कंप्यूटर या स्क्रिप्ट में कुछ प्रोग्राम VB में डाउनलोड करना होगा (मुझे लगता है कि आप विंडोज़ पर हैं)।

आप वही कर सकते हैं जो आप sed के साथ दो तरीकों में से एक चाहते हैं। Sed utility * nix पर एक पसंदीदा है और GnuWin के महान लोगों से विंडोज के लिए पाया जा सकता है (http://gnuwin32.sourceforge.net/packages/sed.htm)। आप इस प्रोग्राम को डाउनलोड करेंगे, और फिर कमांड प्रॉम्प्ट से अपना कमांड चलाएं।

युक्त सभी पंक्तियां हटाएं:
sed -i '/^<PATH>/!d' file

एक नई फाइल के साथ सभी लाइनों को मुद्रित करें:
sed -n '/^<PATH>/p' file > newfile

मेरा सुझाव है कि आप उन लाइनों को प्रिंट करें जिनका आप एक नई फाइल चाहते हैं। इसका कारण यह है कि आपको शायद पहली बार रेगेक्स स्टेटमेंट नहीं मिलेगा। Sed उपयोगिता नियमित अभिव्यक्ति बेसिक सिंटेक्स का उपयोग करती है (संदर्भ देखें http://www.regular-expressions.info/reference.html)। यदि एक * निक्स पथ (/ var / www) जैसा कुछ है तो आपको अपने रेगेक्स के काम के लिए / चरित्र से बचने की आवश्यकता होगी।

उदाहरण: sed -n '/^\/var\/www/p' file > newfile 
यह '/ var / www' से शुरू होने वाली सभी लाइनों को प्रिंट करेगा। अगर मैंने / चरित्र से बचने के लिए दायर किया, तो कमांड ने एक त्रुटि फेंक दी होगी। आप बैकस्लैश कैरेक्टर के साथ एक विशेष चरित्र (जैसे /) से बच सकते हैं।


2
2018-05-30 03:00





रेगेक्स के साथ बेहतर समाधान प्रतिस्थापित करें:

(?!^.*SOMETEXT.*$)^.+\r?\n

और कुछ भी के साथ प्रतिस्थापित करें


1
2018-05-01 14:37



सुपर उपयोगकर्ता में आपका स्वागत है! उन लोगों के लिए यह बताने की देखभाल करें जो शायद नहीं जानते कि रेगेक्स का प्रत्येक बिट क्या करता है? :) - bertieb


खोज का उपयोग करें-> बदलें और एक नियमित अभिव्यक्ति दर्ज करें जैसे ^[^ ].* और सभी को एक खाली स्ट्रिंग का उपयोग करके प्रतिस्थापित करें Regular expression। अगला कदम खोज लाइनों को खोजने के लिए है \n\n के साथ बदलना \n का उपयोग करते हुए Extended कई बार तक 0 occurrences were found. (उपयोग \r\n\r\n तथा \r\n फ़ाइल प्रारूप के आधार पर)। यदि आपके पास पंक्ति में बहुत खाली रेखाएं हैं, तो इसका उपयोग करना तेज़ है \n\n\n\n\n\n\n या भी अधिक \n: खोज स्ट्रिंग में एस है।


0
2018-05-29 15:16