मैं नोटपैड ++ में इस कार्य को कैसे स्वचालित कर सकता हूं


0

मेरे पास लगभग 200+ टेबल नामों के साथ एक टेक्स्ट फ़ाइल है। इस तरह नमूना

T_BCPCOMITEE_EA4
T_BCPEMERSIT_EA4
T_BCPROLE_EA4
T_BDR_AG_EA4
T_BDR_CRITERIA_EA4

मुझे टेबल का नाम लेने और अंतिम चयन आउटपुट को htis जैसा होना चाहिए

--T_BCPCOMITEE_EA4
T_BCPCOMITEE_EA4 से * का चयन करें;
--T_BCPEMERSIT_EA4
T_BCPEMERSIT_EA4 से * का चयन करें;
--T_BCPROLE_EA4
T_BCPROLE_EA4 से * का चयन करें;
--T_BDR_AG_EA4
T_BDR_AG_EA4 से * का चयन करें;
--T_BDR_CRITERIA_EA4
T_BDR_CRITERIA_EA4 से * का चयन करें;

क्या कोई तरीका है जिससे मैं इस कार्य को स्वचालित कर सकता हूं। कृपया मदद कीजिए। TIA

जवाबों:


2

ऐसा करने का सबसे आसान तरीका एक रेगेक्स ढूंढना और प्रतिस्थापित करना है।

यह Searchटूलबार पर जाने या फिर चयन करने Replace..., या कुंजी संयोजन CTRL+ का उपयोग करके किया जाता है H

सुनिश्चित करें कि आपने Regular expressionनीचे दाईं ओर चयन किया है और सुनिश्चित करें कि . matches newlineअनियंत्रित है (यह रेगेक्स के लिए आवश्यक है)।

नोट: यह रेगेक्स समाधान यह मान रहा है कि प्रत्येक पंक्ति का एक अलग और पूर्ण तालिका नाम है (जैसा कि, कोई तालिका नाम कई लाइनों में विभाजित नहीं हैं और प्रत्येक पंक्ति में केवल एक एकल तालिका नाम है)।

निम्नलिखित को "खोजें" बॉक्स में डालें:

^(.*)

निम्नलिखित को "बदलें" बॉक्स में डालें:

--\1\nSELECT * FROM \1;

व्याख्या

रेग्ज स्ट्रिंग को निम्न प्रकार से तोड़ा जा सकता है:

यह ^लाइन एंकर की एक शुरुआत है और यह सुनिश्चित करता है कि रेगेक्स प्रत्येक लाइन की शुरुआत से मेल खाता है। यह सुनिश्चित करता है कि यह गलती से अतिरिक्त लाइनों को नहीं उठाता है।

(.*)समूह किसी भी चरित्र (मिलान करने के लिए प्रयोग किया जाता है .) कितनी भी बार ( *) और फिर उन का मिलान नहीं हुआ पात्रों की जगह स्ट्रिंग के लिए उपलब्ध बनाने के लिए ( ()) के प्लेसहोल्डर प्रारूप का उपयोग कर $x, x समूह संख्या (जो क्रमिक रूप से बढ़ जाती है के साथ, 1किया जा रहा है पहला, 2दूसरा और ऐसा ही होना)।

प्रतिस्थापित स्ट्रिंग को निम्नानुसार तोड़ा जा सकता है:

--\1का उपयोग दो शाब्दिक -वर्णों को मुद्रित करने के लिए किया जाता है , इसके बाद regex ( (.*)समूह) में मिलान किए गए सभी वर्ण , जिनके स्थान पर डाले जाते हैं \1

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

SELECT * FROM \1;सिवाय अनुभाग, देखा के रूप में स्ट्रिंग मुद्रित करने के लिए प्रयोग किया जाता है \1से पहले के रूप में मिलान किया वर्णों से बदला गया है (जो तालिका नाम हो जाएगा)।


जल्दी बारी के लिए धन्यवाद। समाधान काम करता है लेकिन एकमात्र समस्या तालिका का नाम $ 1 द्वारा प्रतिस्थापित किया जा रहा है। इसके लिए कोई ट्यूनिंग?
RaMs_YearnsToLearn

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

@RaMs_YearnsToLearn वास्तव में, आगे के निरीक्षण पर, ऐसा लगता है कि आप \1इसके बजाय प्रारूप का उपयोग कर सकते हैं $1(हालांकि मैं अनिश्चित हूं कि यह मेरी मशीन पर क्यों काम करेगा और आपका नहीं)। क्या यह प्रतिस्थापन स्ट्रिंग में परिवर्तन करने से समस्या ठीक हो जाती है? यदि हां, तो मैं अतिरिक्त विवरण के साथ उत्तर को अपडेट करूंगा।
मैट चैंपियन

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