रेगेक्स: "मदद", आदि युक्त लाइनें निकालें


371

मेरे पास आदेशों का एक लंबा दस्तावेज़ है। नोटपैड ++ या रेगेक्स का उपयोग करते हुए, मैं कीबोर्ड "हेल्प" सहित "मदद" सहित सभी लाइनों को हटाना चाहता हूं, आदि।

यह कैसे किया जा सकता है?

जवाबों:


945

नोटपैड ++ के साथ भी यह संभव है:

  • खोज मेनू पर जाएं, Ctrl+ Fऔर मार्क टैब खोलें ।
  • बुकमार्क लाइन की जाँच करें (यदि वर्तमान संस्करण में कोई मार्क टैब अपडेट नहीं है )।

  • अपना खोज शब्द दर्ज करें और सभी को चिह्नित करें पर क्लिक करें

    • खोज शब्द वाली सभी पंक्तियों को बुकमार्क किया गया है।
  • अब मेनू में जाएं सर्चबुकमार्कबुकमार्क की गई लाइनें निकालें

  • किया हुआ।


36
हाँ! इसमें like Remove Unmarked Lines ’भी है, जो कि grep की तरह है, वास्तव में मुझे जिसकी आवश्यकता है!
च्लोए

6
धन्यवाद, यह एक साफ-सुथरी चाल है। मैं इसे यूनिक्स कंसोल ( cdपथ में अनदेखी कर रहा हूँ कि ज्यादातर विंडोज पर है) की तुलना में कुछ सरल क्लिकों के साथ किया जा सकता है , और एक जटिल कमांड में टाइप करें (सिंटैक्स के बारे में चिंता और स्थायी रूप से खराब होने के बारे में तब एहसास कोई बैकअप नहीं है)। [ मुझे गलत मत समझो, मैं हर समय अन्य चीजों के लिए कंसोल कमांड का उपयोग करता हूं, लेकिन कुछ इस तरह से, यह सिर्फ एक ओवरकिल है।]
ADTC

2
बस मुझे बहुत समय बचा लिया :-)
ब्रजजा

3
जाँच BOOKMARK LINEयहाँ महत्वपूर्ण है अन्यथा यह काम नहीं करेगा!।
HaSeeB MiR

1
@AndrewSchultz, क्षमा करें, लेकिन नहीं।
स्टेमा

187

नोटपैड ++ में ऐसा करने का एक और तरीका है सभी खोजें / बदलें संवाद और regex के साथ:

  • Ctrl+ hखोजने के लिए संवाद को लाने के लिए।

  • में Find what:: पाठ बॉक्स अपने रेगुलर एक्सप्रेशन से शामिल .*help.*\r?\n(जहां \rमामले में फ़ाइल Windows लाइन अंत नहीं है वैकल्पिक है)।

  • Replace with:टेक्स्ट बॉक्स को खाली छोड़ दें ।

  • सुनिश्चित करें कि खोज मोड क्षेत्र में नियमित अभिव्यक्ति रेडियो बटन चयनित है। फिर क्लिक करें Replace Allऔर वॉइला! आपके खोज शब्द वाली सभी लाइनें helpहटा दी गई हैं।

N ++ में कैसे-कैसे लाइन बदलें


17
मार्क टैब का उपयोग करने से बेहतर उत्तर है, क्योंकि यह "फाइल्स इन फाइल्स" के लिए किया जा सकता है
एलेक्स

2
बैकस्लैश के साथ कोष्ठक जैसे विशेष पात्रों से बचना सुनिश्चित करें।
नौमेनन

4
अनचेक करें "नई मेल खाता है"
MagTun

1
बेहतर प्रदर्शन के कारण बेहतर जवाब। > 1मिल्स लाइनों की फाइलों के साथ बुकमार्क विधि को अधिकतम, आधुनिक मशीनों पर भी बढ़ाया जाता है।
रोलैंड एटिंगर

17

इसके साथ आसान काम grep:

grep -v help filename

> newFileNameएक नई फ़ाइल में आउटपुट पुनर्निर्देशित करें ।


अपडेट करें

इसे स्पष्ट करने के लिए, सामान्य व्यवहार स्क्रीन पर लाइनों को प्रिंट करेगा। इसे एक फ़ाइल में पाइप करने के लिए, >उपयोग किया जा सकता है। इस प्रकार, इस कमांड में:

grep -v help filename > newFileName
  1. grepgrepजाहिर है, कार्यक्रम को बुलाता है
  2. -vआउटपुट को उलटा करने के लिए एक ध्वज है। डिफाल्ट द्वारा, grepदी गई पैटर्न से मेल खाने वाली लाइनों को प्रिंट करता है। इस झंडे के साथ, यह उन पंक्तियों को प्रिंट करेगा जो पैटर्न से मेल नहीं खाते हैं।
  3. help मिलान करने के लिए पैटर्न है
  4. filename इनपुट फ़ाइल का नाम है
  5. > आउटपुट को निम्न आइटम पर पुनर्निर्देशित करता है
  6. newFileName नई फ़ाइल जहां आउटपुट सहेजा जाएगा।

जैसा कि आप देख सकते हैं, आप अपनी फ़ाइल में चीजों को हटा नहीं रहे हैं। grepइसे पढ़ेंगे और एक अन्य फ़ाइल सहेजा जाएगा, तदनुसार संशोधित किया जाएगा।


@ केविन ड्यूक: काश! शायद इसका मतलब है कि आपने grepस्थापित नहीं किया है। वैसे भी मैं आपको GNU grep स्थापित करने की सलाह दूंगा, यह निश्चित रूप से विंडोज पर काम करेगा, और यह वास्तव में उपयोगी उपकरण है।
दोपहर

@sidyll यह जानता था कि grep क्या है और इसने आउटपुट का एक गुच्छा दिया है, ऐसा इसलिए हो सकता है क्योंकि मैंने आउटपुट फ़ाइल निर्दिष्ट नहीं की है
नींबू

2
@ केविन ड्यूक: जैसा कि मैंने पहले जवाब में कहा था, आउटपुट को पुनर्निर्देशित किया जा सकता है। मानक व्यवहार स्क्रीन पर प्रिंट होता है। पुनर्निर्देशित करने के लिए, आप एक पाइप का उपयोग करते हैं ( >इस मामले में), एक अंतिम आदेश देgrep -v help filename > outputFileName
sidyll

धन्यवाद, मैं निश्चित रूप से यह कोशिश करूँगा!
नींबू

ग्रेप> के पात्रों दृश्यों को खोजने के लिए सप्ताह के किसी दिन sed
kwikness

13

आप इसे सेड के प्रयोग से कर सकते हैं: sed '/help/ d' < inputFile > outputFile


4
@CengizFrostclaw: लिनक्स / मैक / जो कुछ भी कमांड लाइन पर। यदि आप विंडोज पर हैं, तो आपको साइग्विन जैसा कुछ इंस्टॉल करना होगा और उसका उपयोग करना होगा।
तिकोन जेल्विस

धन्यवाद @TikhonJelvis! और एक अंतिम प्रश्न, क्या हम मदद से शुरू होने वाली (युक्त नहीं) सभी लाइनों को हटाने के लिए sed 'मदद /' कर सकते हैं?
जेफ

3
@CengizFrostclaw: मुझे लगता है कि sed '/^help/ d'काम करना चाहिए। ^लाइन की शुरुआत का प्रतिनिधित्व।
तिखन जेल्विस

@ जफ पॉवरशेल है sedऔरgrep
ओकर

साइबरगन utf-16 फाइलों के साथ विंडोज़ पर काम नहीं कर सकता है। Cygwin उपयोगिताओं डिफ़ॉल्ट रूप से UFT-8 का उपयोग करती हैं। उनमें से बहुत कम लोग यूटीएफ -16 का समर्थन करते हैं। बाबुन babun.github.io का उपयोग करें । यह साइबरविन के इर्द-गिर्द एक आवरण के रूप में काम करता है, लेकिन बहुत सारी चीजें बॉक्स से बाहर प्रदान करता है।
साहिल सिंह


6

यदि आप विंडोज पर हैं , तो प्रयास करें findstr। तृतीय-पक्ष उपकरण की आवश्यकता नहीं है:

findstr /V /L "searchstring" inputfile.txt > outputfile.txt

यह रेगेक्स का भी समर्थन करता है! बस उपकरण की मदद पढ़ें findstr /?

PS यदि आप बड़ी, बड़ी फ़ाइलों (जैसे 400 एमबी लॉग फ़ाइल) के साथ काम करना चाहते हैं, तो एक टेक्स्ट एडिटर बहुत मेमोरी-कुशल नहीं है, इसलिए, जैसा कि किसी ने पहले ही बताया है, कमांड-लाइन टूल जाने का रास्ता है। लेकिन विंडोज पर कोई grep नहीं है, इसलिए ...

मैंने इसे केवल 1 जीबी लॉग फाइल पर चलाया, और इसे सचमुच 3 सेकंड का समय लगा।

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