सभी कई अलग-अलग मानों को एक साथ खोजें और बदलें


15

मैं के कई उदाहरण के साथ एक फ़ाइल है Text_1और Text1और मैं दोनों के साथ उन लोगों के तार बदलने की आवश्यकता Text_Aऔर TextBक्रमशः।

वर्तमान में मैं प्रत्येक फ़ाइल पर दो खोजने और बदलने वाले फ़ंक्शंस कर रहा हूं जो Text_1इसे ढूंढता है और इसके साथ बदलता है Text_Aऔर दूसरा जो Text1इसे ढूंढता है और इसके साथ बदलता है TextB

क्या "फाइंड एंड रिप्लेस" को दो बार चलाने के बजाय एक बार में यह सब करने का कोई तरीका है?

मैं Dreamweaver का उपयोग कर रहा हूं CS3, लेकिन मेरे पास नोटपैड ++, नियमित नोटपैड, ओओ राइटर, एमएस वर्ड भी हैं यदि वे आसान होंगे। आदर्श रूप से मैं ड्रीमविवर या नोटपैड ++ में ऐसा कर सकता था, लेकिन काम पूरा करने के लिए मैं कुछ और डाउनलोड करने के लिए तैयार हूं। मैं कोई कमांड लाइन सामान नहीं करना चाहता या बैच फ़ाइल बनाना नहीं चाहता (जबकि मुझे इसकी जानकारी है, मैं इसे वास्तव में नहीं समझता)।

यदि उपरोक्त विवरण स्पष्ट नहीं है, तो मुझे इसे इस तरह समझाएं ...

मैं 1 दस्तावेज़ में 1 बार फाइंड एंड रिप्लेस को चलाना चाहता हूं और मैं चाहता हूं कि निम्नलिखित में से सभी ऐसा करें और एक उदाहरण खोजें:

  1. खोजें Text_1 और बदलें के साथText_A
  2. खोजें Text1 और बदलें के साथTextB

मैं कई दस्तावेज़ों में एक खोज और प्रतिस्थापित करने की कोशिश नहीं कर रहा हूँ ।


यह संभव हो सकता है कि Regexp खोजने और बदलने का उपयोग करके एक अलग पैटर्न हो। वरना यह संभव @matt नहीं है
Sathyajith भट्ट

जवाबों:



24

नोटपैड ++ 6.0 के बाद से यह निम्नलिखित तकनीकों का उपयोग करके स्क्रिप्ट के बिना वास्तव में संभव है:

ढूँढें: Text_1 और इसके साथ बदलें: Text_A

ढूँढें: Text2 और इसके साथ बदलें: TextB

खोजें: (Text_1) | (Text2)

प्रतिस्थापित करें: (1Text_A) (? 2TextB)

सामान्य वाक्यविन्यास है:

Find: (FindA)|(FindB)|(FindC)...

Replace: (?1ReplaceA)(?2ReplaceB)(?3ReplaceC)...

? पहले संदर्भित वाक्यांश और इतने पर संदर्भित करता है।

मुझे यह निम्नलिखित उत्तर से मिला: /programming//a/16104946/287101


3

नोटपैड ++ का उपयोग करके, आप या तो कर सकते हैं

  • उन सभी फाइलों को खोलें, जिन्हें आप बदलना चाहते हैं और सभी खुली फाइलों में फाइंड / रिप्लेसमेंट का उपयोग करना चाहते हैं

    यहाँ छवि विवरण दर्ज करें

  • फाइलों में फाइंड / रिप्लेसमेंट का उपयोग करें

    यहाँ छवि विवरण दर्ज करें

  • खोजने वाले मैक्रो को रिकॉर्ड करें और विकल्प बदलें और इसे वापस चलाएं


यही मैं करने की कोशिश कर रहा हूं। मैं एक बार में कई फ़ाइलों पर इसे बदलना नहीं चाहता, मैं एक बार में एक फ़ाइल में कई तार बदलना चाहता हूँ। मैं एक खोज और प्रतिस्थापन को चलाने में सक्षम होना चाहता हूं और यह दस्तावेज़ को खोजता है और Text_1 के सभी उदाहरणों को Text_A के साथ और Text1 के सभी उदाहरणों को TextB के साथ बदल देता है। दो अलग-अलग तारों को एक फ़ाइल में दो अलग-अलग मानों के साथ बदल दिया गया।
मैट

छवि-लिंक टूट गए हैं, किसी भी तरह आप उन्हें किसी भी तरह ठीक कर सकते हैं?
बॉबी

2

आप फाइंड एंड रिप्लेस को दो बार चलाने से बेहतर हैं, क्योंकि आपके पास दो अलग-अलग प्रतिस्थापन हो रहे हैं। हालांकि, प्रसंस्करण समय में बहुत कम व्यापार होना चाहिए। निम्नलिखित को धयान मे रखते हुए:

रनिंग फाइंड एंड रिप्लेस एक बार, टर्म बाय सर्च:

Get Term
  Does term match?  If so, replace term
Get Next Term
...

चल रहे उद्देश्यों के लिए, हम इसे रेखीय मानेंगे और कहेंगे कि यह O (n) समय में चलता है।

आप दो अलग-अलग शब्द खोजना चाहते हैं। रनिंग फाइंड और रिप्लेस दो बार दिखता है:

Get Term
  Does term match?  If so, replace term
Get Next Term
...

Get Term
  Does term match?  If so, replace term
Get Next Term
...

जो O (2x1n) समय, या एक शब्द की खोज के लिए दो बार लगेगा।

दो प्रतिस्थापनों के साथ दो शब्दों के लिए खोज करना सैद्धांतिक रूप से ऐसा लगेगा:

Get Term
  Does first term match?  If so, replace first term
  Does second term match?  If so, replace second term
Get Next Term
...

शर्तों को प्राप्त करना उतनी प्रसंस्करण शक्ति नहीं लेता है, इसलिए अनिवार्य रूप से आप प्रत्येक शब्द के लिए खोज के दो सेट देख रहे हैं, ओ (1x2n) का समय दे रहे हैं, एक बार चल रहे हैं लेकिन दो शब्द खोज रहे हैं।

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

प्रचारकों के लिए अस्वीकरण: यह एक सामान्यीकृत उदाहरण है। मुझे पता है कि यह बेहतर है लेकिन मैं यह दिखाने की कोशिश कर रहा हूं कि यह सुविधा क्यों नहीं मिली।


0

नोटपैड ++ में नियमित अभिव्यक्ति समर्थन गंभीर रूप से सीमित है। वैकल्पिक ऑपरेटर के बिना, जो आप करना चाहते हैं उसके करीब आने की भी कोई उम्मीद नहीं है। आपको sedएक संपादक का उपयोग करने की आवश्यकता होगी जिसमें बेहतर रेगेक्स समर्थन है।

नियमित अभिव्यक्ति सिंटैक्स में आमतौर पर उपयोग किए जाने वाले GNU एक्सटेंशन में शामिल हैं:

  • ? ऑपरेटर, जिसका अर्थ शून्य या एक प्रकार का है;
  • | अल्टरनेशन ऑपरेटर ("फू | बार" या तो "फू" या "बार" से मेल खाता है)
  • लालची या / i के लिए संशोधक जैसे / केस असंवेदनशील;
  • {a, b} एक तरह के बीटन और बी टोकन को निरूपित करने के लिए।
  • (पैटर्न) + एक ही पैटर्न के एक या अधिक मिलान करने के लिए

Scitilla घटक, जो Notepad ++ को कम करता है, सख्ती से POSIX- संगत है और इन एक्सटेंशन को नहीं पहचानता है। आप एक पूर्ण ठहरनेवाला और कुछ उदाहरणों के लिए नियमित अभिव्यक्तियों से परामर्श कर सकते हैं

स्रोत

यह सभी देखें

sedविंडोज के लिए GNUWin32


0

मैं बैच खोजने और बदलने के लिए TextCrawler का उपयोग करता हूं। (मैं एकल खोज के लिए नोटपैड ++ का उपयोग करता हूं / कई फाइलों में प्रतिस्थापित करता हूं क्योंकि यह टेक्स्टक्रॉलर की तुलना में तेज है।) टेक्स्टक्रॉलर नियमित अभिव्यक्तियों के साथ-साथ सामान्य खोज / खोज का भी समर्थन करता है। बैच फ़ाइलों को सहेजा जा सकता है और भविष्य के उपयोग के लिए पुनः लोड किया जा सकता है।


कृपया देखें कि मैं अपने उत्तरों में सॉफ्टवेयर की सिफारिश कैसे करूं? विशेष रूप से, नंगे न्यूनतम पर, जहां सॉफ़्टवेयर प्राप्त करने के लिए कहें।
जी-मैन का कहना है कि 21-21 पर मोनिका '

बैच फ़ंक्शन केवल TextCrawler के गैर-मुक्त प्रो संस्करण में उपलब्ध है।
होब्स

0

यह ActiveX प्लगइन (नोटपैड ++ के लिए) का उपयोग करके और कस्टम स्क्रिप्ट निष्पादित करके भी किया जा सकता है:

NppApplication.activeEditor.text
=NppApplication.activeEditor.text
.replace(/Text_1/g,"Text_A")
.replace(/Text1/g,"TextB")

यह काम करता है, लेकिन ध्यान दें कि ActiveX प्लगइन में एक करंट बग के कारण हर बार जब आप स्क्रिप्ट चलाते हैं तो फाइल में NULL कैरेक्टर जोड़ा जाता है।
ईदन

-1

यह सभी संख्याओं के लिए काम करता है (पाठ / लेख से सभी संख्याओं को हटाने के लिए)

  1. ढूँढें और बदलें संवाद खोलने के लिए Ctrl + H दबाएँ।

  2. "क्या खोजें" बॉक्स में, ^ # टाइप करें

  3. "रिप्लेस विथ" बॉक्स खाली छोड़ दें।

  4. सबको बदली करें।


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