जवाबों:
लाइनों को वर्णानुक्रम में क्रमबद्ध करें, यदि वे पहले से ही नहीं हैं, और इन चरणों को निष्पादित करें:
(इस संबंधित प्रश्न पर आधारित: मैं कैसे नियमित एक्सप्रेशन का उपयोग करके फ़ाइल से डुप्लिकेट लाइनें ढूंढता हूं और हटा सकता हूं? )
Control+F
"मोड बदलें" टॉगल करें
"नियमित अभिव्यक्ति का उपयोग करें" टॉगल करें (प्रतीक के साथ आइकन .*
)
में खोज क्षेत्र, टाइप करें^(.*)(\n\1)+$
" बदलें " फ़ील्ड के साथ , टाइप करें$1
इस मामले में, या तो वीएस कोड के बाहर एक समाधान का सहारा लें ( यहां देखें ), या - यदि आपका दस्तावेज़ बहुत बड़ा नहीं है और आप रिप्लेसमेंट ऑल बटन को स्पैम करने का बुरा नहीं मानते हैं - पिछले चरणों का पालन करें, लेकिन चरण 4 और 5 में। इन्हें दर्ज करें:
( बिना छँटाई के विशिष्ट डुप्लिकेट लाइनें निकालें )
सावधानी: बहुत सी लाइनों (1000+) के साथ फ़ाइलों के लिए ब्लॉक; दुर्घटना के कारण वीएस कोड हो सकता है; कुछ मामलों में रिक्त लाइनें पेश कर सकते हैं।
खोज :((^[^\S$]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\n)?
इसके साथ बदलें :$1
और फिर "सभी को बदलें" बटन पर क्लिक करें क्योंकि कई बार डुप्लिकेट घटनाएं होती हैं ।
जब आप बटन पर क्लिक करेंगे तो आपको पता चल जाएगा कि लाइन की गिनती कम हो गई है। उस पर नज़र रखने के लिए दस्तावेज़ की अंतिम पंक्ति पर नेविगेट करें।
^(.*)(\n\1)+$
। डुप्लिकेट पंक्तियों को हटाने के बाद मैं csv में डुप्लिकेट पहले कॉलम वाली सभी पंक्तियों को देखना चाहता हूं और regex को संशोधित करना चाहता हूं।
\r?
दूसरे उत्तर से बिट वास्तव में आवश्यक नहीं है।
यहां एक बहुत ही रोचक विस्तार है: ट्रांसफार्मर
विशेषताएं:
डुप्लिकेट लाइनों को हटाने के लिए:
दस्तावेज़ से डुप्लिकेट लाइनें निकालता है
यदि कोई चयन नहीं है, तो चयन या वर्तमान ब्लॉक पर कार्य करता है
मैंने इसके साथ "यूनीक लाइन्स" कमांड के अलावा बहुत कुछ नहीं खेला है, लेकिन यह काफी अच्छी तरह से किया जाता है (मैक्रो मेनू का प्रयास करने सहित)।
@ Marc.2377 के उत्तर में जोड़ने के लिए।
यदि आदेश महत्वपूर्ण है और आप इस बात की परवाह नहीं करते हैं कि आप केवल डुप्लिकेट लाइनों में से अंतिम को बनाए रखते हैं, तो बस निम्नलिखित regexp की खोज करें यदि आप केवल गैर-खाली लाइनों को हटाना चाहते हैं
^(.+\n)(?=(?:.*\n)*?\1)
अगर आप भी डुप्लिकेट खाली लाइनों को हटाना चाहते हैं, तो *
इसके बजाय उपयोग करें+
^(.*\n)(?=(?:.*\n)*?\1)
और कुछ भी नहीं के साथ बदलें।
यह एक लाइन लेगा और कुछ और (शायद 0) लाइनों को आगे बढ़ाने की कोशिश करेगा, इसके बाद ली जाने वाली सटीक लाइन। यह ली गई लाइन को हटा देगा।
यह सिर्फ एक-शॉट रेगेक्स है। प्रतिस्थापित बटन को स्पैम करने की आवश्यकता नहीं है।
^(.+\n)(?=(?:.*\n)*?\1)
इसके बजाय अनुशंसा करता हूं क्योंकि आपके रेगेक्स ने एक खाली लाइन हटा दी थी जहां इसकी उम्मीद नहीं थी। वैसे भी अपवित्र।
xxx(?=…)
एक लुकहेड-मैच है। तो यह सुनिश्चित करता है कि, जो कुछ भी "xxx" मैचों "..." का अनुसरण करता है, लेकिन खोज को आगे नहीं बढ़ाता है। (?:…)
सिर्फ एक ब्रैकेट है, जो ब्रैकेट की गिनती में नहीं आता है। .*\n
(संभवतः खाली) लाइन के लिए एक पैटर्न है। *
इसका मतलब है कि कई लाइनें हो सकती हैं, यहां तक कि कोई भी नहीं। ?
तारांकन के बाद ( *
) का अर्थ है हम जल्द से कुछ लाइनों के रूप में चाहते हैं। जैसा कि \1
इस अभिव्यक्ति का प्रभाव यह है कि हम उन सभी रेखाओं के लिए आगे देखते हैं जो \1
तब तक मेल नहीं खातीं जब तक हम एक रेखा मिलान नहीं करते \1
। मुझे उम्मीद है कि यह स्पष्ट हो जाएगा।
मेरे पास बस यही मुद्दा था और विजुअल स्टूडियो कोड पैकेज "सॉर्ट लाइन्स" मिला। विवरणों के लिए विज़ुअल स्टूडियो कोड मार्केट प्लेस देखें (जैसे क्रमबद्ध लाइनें )।
इस पैकेज में विकल्प "सॉर्टिंग लाइन्स (अद्वितीय)" है, जो मेरे लिए था। लाइनों की शुरुआत / अंत में किसी भी सफेद स्थान का ध्यान रखें। वे प्रभावित करते हैं कि क्या लाइनें अद्वितीय मानी जाती हैं या नहीं।
DupChecker एक्सटेंशन स्थापित करें , हिट करें F1, और "डुप्लिकेट जांचें" टाइप करें।
यह डुप्लिकेट की जांच करेगा और पूछेगा कि क्या आप उन्हें हटाना चाहते हैं।
एक नियमित अभिव्यक्ति के साथ खोजने और बदलने की कोशिश करें ।
खोजें:
^(.+)((?:\r?\n.*)*)(?:\r?\n\1)$
बदलने के:
$1$2
पहले समूह में कुछ विचरण करना संभव है।
वास्तव में विजुअल स्टूडियो कोड में नहीं है, लेकिन अगर यह काम करता है, तो यह काम करता है।
यह सबसे अच्छा जवाब नहीं है, जैसा कि आपने विज़ुअल स्टूडियो कोड निर्दिष्ट किया है, लेकिन जैसा कि मैंने कहा: यदि यह काम करता है, तो यह काम करता है :)
((^[^\S\r\n]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\r?\n)?
मेरी vscode दुर्घटना बनाया .... मैं एक फ़ाइल 229 लाइनों में एक खोज किया था। :(