नोटपैड + में डुप्लिकेट पंक्तियों को निकालना


595

क्या नोटपैड ++ में डुप्लिकेट की गई पंक्तियों को निकालना संभव है, एक लाइन की केवल एक घटना को छोड़कर?

जवाबों:


759

नोटपैड ++ ऐसा कर सकता है, बशर्ते आप एक ही समय पर लाइन को क्रमबद्ध करना चाहते हों, और एक ही समय में डुप्लिकेट लाइनों को हटा दें।

आपको TextFX प्लगइन की आवश्यकता होगी। यह नोटपैड ++ के पुराने संस्करणों में शामिल किया गया था, लेकिन अगर आपके पास एक नया संस्करण है, तो आप इसे मेनू से जोड़ सकते हैं Plugins -> Plugin Manager -> Show Plugin Manager -> Available tab -> TextFX -> Install। कुछ मामलों में यह भी कहा जा सकता है TextFX Characters, लेकिन यह एक ही बात है

चेक बॉक्स और बटन अब तहत मेनू में दिखाई देगा आवश्यक: TextFX -> TextFX Tools

सुनिश्चित करें कि "सॉर्ट आउटपुट केवल अद्वितीय है ..." की जाँच की जाती है। अगला, टेक्स्ट का एक ब्लॉक चुनें ( Ctrl+ Aसंपूर्ण दस्तावेज़ का चयन करने के लिए)। अंत में, "सॉर्ट लाइन्स केस सेंसिटिव" या "सॉर्ट लाइन्स केस असंवेदनशील" पर क्लिक करें

n ++ में मेनू लेआउट


32
अविश्वसनीय रूप से शक्तिशाली प्लगइन, इसकी "उम्र" के बावजूद। आशा है कि वे मानक एनपीपी प्लगइन प्रस्ताव से एक को हटा देंगे। जिस आदमी ने इस प्लग-इन में सभी सुविधाओं के बारे में सोचा था, वह "दूरदर्शी" था।
GeertVc

7
एक्सेल की तुलना में अधिक शक्तिशाली।
वासु

6
नोटपैड ++ x64 संस्करण के बारे में क्या? प्लगइन TextFX x64- संस्करण मौजूद नहीं है
जियोग्राफ

15
TextFx 64 बिट संस्करण में नहीं है।
रिह्यूस

4
@Geograph और TextFx का 64 बिट प्लगइन नहीं होगा यह नोट देखें । इसलिए यह जानना अच्छा होगा कि क्या एक वैकल्पिक प्लगइन है जो सॉर्ट और डुप्लिकेट हटाने प्रदान करता है।
रॉबर्ट

641

नोटपैड ++ संस्करण 6 के बाद से आप इस रेगेक्स का उपयोग खोज और संवाद को बदल सकते हैं:

^(.*?)$\s+?^(?=.*^\1$)

और कुछ भी नहीं के साथ बदलें । यह सभी डुप्लिकेट पंक्तियों को फ़ाइल में अंतिम घटना से छोड़ता है।

उसके लिए किसी तरह की छंटाई की जरूरत नहीं है और डुप्लिकेट पंक्तियाँ फ़ाइल में कहीं भी हो सकती हैं!

आपको "रेगुलर एक्सप्रेशन" और "मैच न्यूलाइन" विकल्पों की जांच करने की आवश्यकता है:

नोटपैड ++ संवाद बदलें

  • ^ लाइन की शुरुआत से मेल खाता है।

  • (.*?)किसी भी वर्ण से 0 या अधिक बार मेल खाता है, लेकिन जितना संभव हो उतना कम है (यह पंक्ति पर बिल्कुल मेल खाता है, "" मेल खाता "विकल्प के कारण इसकी आवश्यकता है")। मिलान की गई पंक्ति को संग्रहीत किया जाता है, क्योंकि ब्रैकेट चारों ओर और सुलभ उपयोग के कारण\1

  • $ लाइन के अंत से मेल खाता है।

  • \s+?^ यह भाग अगली पंक्ति की शुरुआत तक सभी व्हाट्सएप पात्रों (newlines!) से मेल खाता है।

  • (?=.*^\1$)यह एक सकारात्मक रूपांतर परख है। इस रेगेक्स में यह एक महत्वपूर्ण हिस्सा है, एक पंक्ति केवल मिलान की जाती है (और हटा दी जाती है), जब फ़ाइल में कहीं और एक ही पंक्ति होती है।


10
ओह, यह एक शानदार है, यह खाली पंक्तियों को भी हटा देता है, मैं इसे इस क्षण को अधिकतम कर रहा हूं :)
अप्रैल 14

66
यह बस कुछ मामलों में एक फ़ाइल में सभी लाइनों को हटा देता है।
13

3
क्या लास्ट घटना को हटाने का कोई तरीका है? यह सब मेल खाता है लेकिन अंतिम एक ...
Cullub

28
मेरे मामले में जहां इस समाधान ने सभी पंक्तियों को हटा दिया, . matches newlineउसने चाल को अनियंत्रित किया।
कुइतसी

3
@ शेर कुछ मामलों में मेरे लिए भी काम नहीं आया, लेकिन जब मैंने "मैचलाइन" को हटा दिया तो यह :)
डेविडेंको

95

यदि पंक्तियाँ एक-दूसरे के तुरंत बाद हैं, तो आप एक रेगेक्स प्रतिस्थापित कर सकते हैं:

खोज पैटर्न: ^(.*\r?\n)(\1)+

से बदलो: \1


1
हो सकता है कि अन्य लोगों को इसके साथ भाग्य मिला हो, लेकिन मेरे लिए ^ (। * \ N) \ "परिणाम में" कठबोली पाठ "
b1nary.atr0phy

4
@ b1naryatr0phy सुनिश्चित करें कि आपके पास "रेगुलर एक्सप्रेशन" के लिए "सर्च मोड" सेट है, मैंने पैटर्न भी अपडेट किया है ताकि यह विंडोज़ स्टाइल लाइन एंडिंग्स को हैंडल कर सके
ग्रांट पीटर्स

3
नोटपैड ++ में एक लाइट रेगेक्स इंजन है, यह एडवांस्ड फंक्शियो की अनुमति नहीं देता है, न कि "? या \ r \ n" भी क्योंकि यह केवल एक लाइन पर काम करता है और आप $ का उपयोग \ r \ n वर्णों के लिए करते हैं
स्टीफन रोगन

3
यह एक के बाद एक को खत्म करता है। आपको इसे कई बार दोहराना होगा। मुझे आश्चर्य है कि क्यों \ n + -> \ n काम नहीं करता (सोचा कि यह कई प्रतिस्थापन की रिपोर्ट करता है)
Val

2
@Val, यदि आप मैच के बैक-रेफरेंस पार्ट को 1-या अधिक मैच वाले समूह के साथ बनाते हैं, तो पैटर्न एक समय में N सन्निहित डुप्लिकेट लाइनों से मेल खाएगा:^(.*\r?\n)(\1)+
Kenigmatic

37

Notepad ++

-> खिड़की बदलें

सुनिश्चित करें कि खोज मोड में आपने नियमित अभिव्यक्ति रेडियो बटन का चयन किया है

क्या ढूँडो:

^ (। *) (\ R? \ N \ 1) + $

से बदलो:

$ 1

इससे पहले:

और हम वहां सोचते हैं

और हम वहां सोचते हैं

इकलौती रेखा

क्या यह संभव है

क्या यह संभव है

उपरांत:

और हम वहां सोचते हैं

इकलौती रेखा

क्या यह संभव है


2
क्या इस काम के लिए फाइल को छांटना जरूरी नहीं है?
पीटर मोर्टेंसन

यह शानदार है
रेमो लिच्छी

30

यदि आप पंक्ति क्रम (जो मुझे नहीं लगता कि आप करते हैं) के बारे में परवाह नहीं करते हैं, तो आप लिनक्स / फ्रीबीएसडी / मैक ओएस एक्स / सिगविन बॉक्स का उपयोग कर सकते हैं और करें:

$ cat yourfile | sort | uniq > yourfile_nodups

फिर नोटपैड ++ में फाइल को फिर से खोलें।


3
विंडोज 7 पर काम नहीं करता है'cat' is not recognized as an internal or external command, operable program or batch file.
Iain Samuel McLean एल्डर

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

11
खिड़कियों में आपके पास शक्तियां हैं:cat yourfile | sort -Unique
एलजार

9
ये "बिल्ली के गंभीर उपयोग" के अच्छे उदाहरण हैं। बिल्ली उपयोगिता के बारे में भूल जाओ और बस फ़ाइल पुनर्निर्देशन का उपयोग करें इस प्रकार: सॉर्ट करें <yourfile | uniq> yourfile_nodups
scott8035

1
@ scott8035, मैं मानता हूं कि उस कमांड को चलाने के लिए बिल्ली का कोई मतलब नहीं है, लेकिन मुझे अक्सर बिल्ली के साथ गैर-स्पष्ट आदेशों के लंबे अनुक्रम का पता लगाने में बिल्ली के साथ शुरू करने में मदद मिलती है। sed ... | sed ... | sed ... और इसी तरह। तो मैं कहूंगा कि बिल्ली का उपयोग करने के कारण हो सकते हैं। बेशक बिल्ली को अंत में हटाया जा सकता है, लेकिन कुछ इसके लिए बहुत आलसी हैं।
फोरट्रान

17

नोटपैड ++ के बाद के संस्करणों में स्पष्ट रूप से टेक्स्टएफएक्स प्लगइन शामिल नहीं है। डुप्लिकेट को सॉर्ट / समाप्त करने के लिए प्लगइन का उपयोग करने के लिए, प्लगइन को डाउनलोड किया जाना चाहिए और स्थापित किया जाना चाहिए (अधिक शामिल) या प्लगइन प्रबंधक का उपयोग करके जोड़ा गया।

ए) आसान तरीका (जैसा कि यहां वर्णित है )।

प्लगइन्स -> प्लगइन प्रबंधक -> प्लग इन प्रबंधक दिखाएँ -> उपलब्ध टैब -> टेक्स्टएफएक्स वर्ण -> स्थापित करें

बी) अधिक शामिल तरीका, अगर किसी अन्य संस्करण की जरूरत है या आसान तरीका काम नहीं करता है।

  1. SourceForge से प्लगइन डाउनलोड करें:

    http://downloads.sourceforge.net/project/npp-plugins/TextFX/TextFX%20v0.26/TextFX.v0.26.unicode.bin.zip

  2. ज़िप फ़ाइल खोलें और NppTextFX.dll निकालें

  3. नोटपैड ++ प्लगइन्स निर्देशिका में NppTextFX.dll रखें , जैसे:
    C: \ Program Files \ Notepad ++ प्लगइन्स।

  4. नोटपैड ++ प्रारंभ करें, और टेक्स्टएफएक्स फ़ाइल मेनू आइटमों में से एक होगा (जैसा कि कॉलिन पिकार्ड द्वारा उत्तर # 1 में देखा गया है)

TextFX प्लगइन स्थापित करने के बाद, डुप्लिकेट को सॉर्ट और निकालने के लिए उत्तर # 1 में दिए गए निर्देशों का पालन करें।

इसके अलावा, सेटिंग> शोरकट मैपर का उपयोग करके एक कीबोर्ड शॉर्टकट सेट करने पर विचार करें यदि आप इस कमांड का अक्सर उपयोग करते हैं या एक कीबोर्ड शॉर्टकट को दोहराना चाहते हैं, जैसे कि सॉर्टिंग के लिए टेक्स्टपैड में F9।


नोटपैड ++ 7.6 में, प्लग-इन को जोड़ा जाना चाहिए C:\Users\<your_user>\AppData\Local\Notepad++\plugins\NppTextFX। इसके अलावा यह अभी भी ठीक काम करता है।
P_W999

14

संस्करण 7.8 में, आप इसे बिना किसी प्लग इन के पूरा कर सकते हैं - संपादित करें -> लाइन ऑपरेशन -> लगातार डुप्लिकेट लाइनें हटाएं। आपको इस काम से पहले लगातार क्रम में डुप्लिकेट लाइनें लगाने के लिए फ़ाइल को सॉर्ट करना होगा, लेकिन यह एक आकर्षण की तरह काम करता है।

छाँटने के विकल्प एडिट -> लाइन ऑपरेशंस -> सॉर्ट बाय ... के अंतर्गत उपलब्ध हैं।


7

ऐसा करने के लिए आपको एक प्लगइन की आवश्यकता हो सकती है। आप ConyEdit की कमांड लाइन cc.ddl(डुप्लिकेट लाइनें हटा सकते हैं) की कोशिश कर सकते हैं । यह नोटपैड ++ सहित पाठ संपादकों के लिए एक क्रॉस-एडिटर प्लगइन है।

ConyEdit पृष्ठभूमि में चलने के साथ, नीचे दिए चरणों का पालन करें:

  1. cc.ddlपाठ के अंत में कमांड लाइन दर्ज करें।
  2. टेक्स्ट और कमांड लाइन को कॉपी करें।
  3. पेस्ट करें, फिर आप देखेंगे कि आपको क्या चाहिए।

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


5

नियमित अभिव्यक्ति के लिए खोजें: \b(\w+)\b([\w\W]*)\b\1\b

इसे इसके साथ बदलें: $1$2

मारो बदलें बटन जब तक आपकी फ़ाइल में नियमित अभिव्यक्ति के लिए कोई और अधिक मेल खाते हैं।


इसे आज़माने के लिए एक परीक्षण फ़ाइल बनाई गई, लेकिन नियमित अभिव्यक्ति ने काम पाने के लिए मज़बूती से काम नहीं किया।
रॉकपॉपर लिज़ल

क्या आप कृपया एक उदाहरण प्रदान करेंगे जो विफल रहता है ताकि मैं अपने उत्तर में सुधार कर सकूं?
हेशम एराकी

4

मेरे लिए कोई काम नहीं किया।

एक समाधान है:

बदलने के

^(.*)\s+(\r?\n\1\s+)+$

साथ में

\1

इसे आज़माने के लिए एक परीक्षण फ़ाइल बनाई गई, लेकिन नियमित अभिव्यक्ति ने काम पाने के लिए मज़बूती से काम नहीं किया।
रॉकपैपर छिपकली

मेरे सभी डेटा के लिए, यह ठीक काम किया। मैं भूल गया कि मेरा समाधान क्या था। अधिक विवरण जोड़ें जहां यह विफल रहा ताकि अन्य लोग इस regex में सुधार कर सकें।
मनोहर रेड्डी पोरेड्डी

मैंने एक फ़ाइल बनाई, ताकि प्रत्येक पंक्ति में उस पर 0-999 के बीच एक पूर्णांक हो, यादृच्छिक क्रम में, कभी-कभी डुप्लिकेट के साथ। यह अधिकांश डुप्लिकेट को नहीं निकालता था, और किसी भी डुप्लिकेट को नहीं हटाता था जो अनुक्रमिक नहीं थे।
रॉकपॉपरलॉगर

1
कृपया काम करने के लिए और काम न करने वाले लोगों के लिए 2 उदाहरण प्रदान करें। यह किसी की मदद करेगा।
मनोहर रेड्डी पोरेड्डी

1
क्यों ^(.*)\s+(\r?\n\1\s+)+$और क्या नहीं ^(.*)\s*(\r?\n\1\s*)+$?
निशान च

2

वर्तमान में प्लगइन प्रबंधक नोटपैड ++ के लिए अनुपलब्ध है (वितरण के साथ नहीं आता है)। आपको इसे मैन्युअल रूप से स्थापित करना होगा ( https://github.com/bruderstein/nppPluginManager/releases ) और यहां तक ​​कि अगर आप करते हैं, तो बहुत सारे प्लग इन अब उपलब्ध नहीं हैं (कोई TextFX) प्लगइन नहीं।

शायद एक और प्लगइन है जिसमें आवश्यक कार्यक्षमता शामिल है। इसके अलावा, नोटपैड ++ में ऐसा करने का एकमात्र तरीका मिलान के लिए कुछ विशेष रेगेक्स का उपयोग करना है और फिर प्रतिस्थापित करना ( Ctrl+ Fबदलें टैब)।

यद्यपि संपादन मेनू आइटम (ट्रिमिंग, खाली लाइनों को हटाने, छँटाई, ईओएल को परिवर्तित करना) के माध्यम से कई कार्य उपलब्ध हैं, लेकिन कोई "अद्वितीय" ऑपरेशन उपलब्ध नहीं है।

यदि आपके पास विंडोज 10 है तो आप बैश को सक्षम कर सकते हैं (माइक्रोसॉफ्ट स्टोर में उबंटू टाइप करें और इसे इंस्टॉल करने के लिए निर्देशों का पालन करें) और उपयोग करें cat your_file.txt | sort | uniq > your_file_edited.txt। बेशक आपको "your_file.txt" के समान कार्यशील निर्देशिका में होना चाहिए या इसके पथ के माध्यम से संदर्भित करना चाहिए।

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