मैं नोटपैड ++ में, प्रत्येक पंक्ति की लंबाई से एक पाठ फ़ाइल में लाइनों को कैसे सॉर्ट कर सकता हूं?


13

मैं नोटपैड ++ में लाइन की लंबाई से एक टेक्स्ट फ़ाइल कैसे सॉर्ट कर सकता हूं? क्या उल्लिखित कार्य के लिए कोई प्लगइन उपलब्ध है?
यदि कोई प्लगइन नहीं है, तो पढ़ने के लिए पहला और शायद दूसरा ट्यूटोरियल क्या है?


1
तुम्हें पता है, कभी-कभी यह सिर्फ कुछ कोड लिखने और इसे खत्म करने के लिए सबसे अच्छा है।
डेनियल आर हिक्स

क्या आप छोटी या बड़ी फ़ाइलों के साथ काम कर रहे हैं?
कॉमफ्रीक

लंबी लाइनों के साथ 50 एमबी की फाइल, लगभग 250 केबी की लंबाई।
hpaknia

क्या डेटा संवेदनशील है? या आप इसे ड्रॉपबॉक्स / गूगल-ड्राइव / आदि पर साझा कर सकते हैं? यदि नोटपैड ++ उस फ़ाइल को खोल सकता है और संभाल सकता है, तो मुझे लगता है कि मेरा समाधान काम करेगा, लेकिन मैं इसे खुद से आज़माना चाहूंगा।
डेन

अरे @HPM, आपके डेटा पर काम करने का कोई भी मौका?
डेन

जवाबों:


6

यह उत्तर एक YouTube वीडियो से प्रेरित है । मूल क्रम को बनाए रखने के लिए अद्यतन किया जाता है, यदि यह महत्वपूर्ण है।

नोटपैड ++ में बिल्ट-इन टेक्स्टएफएक्स टूल है जो चयनित लाइनों को वर्णानुक्रम में सॉर्ट करता है। इस उपकरण को प्रत्येक पंक्ति के बाईं ओर रिक्त स्थान रखकर लाइनों की लंबाई के आधार पर छांटा जा सकता है, और सुनिश्चित करें कि सभी लाइनें समान लंबाई हैं।

"द ज़ू" "उनके घर" से पहले वर्णानुक्रम में आता है क्योंकि अंतरिक्ष को एक चरित्र के रूप में माना जाता है और "i" से पहले आता है। __X(बहानेबाजी कर रहे हैं वास्तव में रिक्त स्थान हैं) इसी तरह से पहले वर्णानुक्रम में आ जाएगा _XX। इस उत्तर में विचार रिक्त स्थान और पंक्ति संख्याओं को जोड़ना है, ताकि __________092dogऊपर छंटनी हो _003alligator

मैं उदाहरण डेटा के रूप में निम्नलिखित का उपयोग करूंगा:

Lorem
ipsum
dolor
sit
amet
consectetur
adipisicing

चरण 1. लाइन नंबर जोड़ें।

(नोट बरलोप द्वारा जोड़ा गया- इस चरण के संबंध में पाठक के लिए एक नोट, हम इन लाइन नंबरों के अनुसार छँटाई नहीं करेंगे। हम लाइनों की लंबाई के अनुसार छँटाई कर रहे हैं। लेकिन लाइन नंबरों को जोड़ने का कारण है, इसलिए हम हैं प्राकृतिक क्रम को जानें, ताकि जब उदाहरण के लिए, दो + रेखाएं समान लंबाई की हों तो हम उन पंक्तियों को उस प्राकृतिक क्रम के अनुसार क्रमबद्ध कर सकते हैं)

मान लें कि आपकी टेक्स्ट फ़ाइल में केवल डेटा है, टेक्स्ट कर्सर (वर्टिकल लाइन) को फ़ाइल के पहले स्थान पर रखें। फिर Editमेनू में Column Editor...( Alt+ C) चुनें। "संख्या को सम्मिलित करें" चुनें और 1 से शुरू करें, 1 से बढ़ें, और अग्रणी शून्य शामिल करें। ध्यान दें कि यह मूल क्रम को बनाए रखेगा जब सबसे छोटी स्ट्रिंग से सबसे लंबी स्ट्रिंग तक छंटनी हो। यदि आप सबसे छोटी से लंबी छँटाई करना चाहते हैं तो पहले सभी पंक्तियों को उलट दें।

1Lorem
2ipsum
3dolor
4sit
5amet
6consectetur
7adipisicing

चरण 2. अग्रणी स्थानों के साथ सभी पंक्तियों को पैड करें।

टेक्स्ट कर्सर (वर्टिकल लाइन) को फाइल के पहले स्थान पर रखें। फिर Editमेनू में Column Editor...( Alt+ C) चुनें। पर्याप्त स्थान डालें ताकि डेटा की सबसे छोटी लाइन को डेटा की सबसे लंबी लाइन की लंबाई तक गद्देदार किया जा सके। यदि आपकी सबसे छोटी पंक्ति में 4 वर्ण हैं, और आपकी सबसे लंबी 44 है, तो सुनिश्चित करें कि आप कम से कम 40 स्थान सम्मिलित करें।

__________1Lorem
__________2ipsum
__________3dolor
__________4sit
__________5amet
__________6consectetur
__________7adipisicing

चरण 3. एक समान लंबाई में लाइनों को ट्रिम करें।

दाएं हाथ के पात्रों की बराबरी या आपकी सबसे लंबी डेटा लाइन की लंबाई से मेल खाने के लिए निम्नलिखित नियमित अभिव्यक्ति ढूँढें / बदलें ( Ctrl+ H) का उपयोग करें।

^.*(.{50})$

सभी के साथ बदलें $1। यह हर पंक्ति के सही-सबसे 50 पात्रों को छोड़कर सब कुछ ट्रिम कर देगा। यदि आपका डेटा 50 से अधिक लंबा (या छोटा) है, {50}तो नियमित अभिव्यक्ति में समायोजित करें ।

(नोट को बार्लॉप द्वारा जोड़ा गया है- यहां विचार यह है कि सबसे छोटी रेखाएं शुरुआत में सबसे अधिक स्थान रखती हैं )

_______1Lorem
_______2ipsum
_______3dolor
_________4sit
________5amet
_6consectetur
_7adipisicing

चरण 4. लाइनों को क्रमबद्ध करें।

सभी पाठ ( Ctrl+ A) का चयन करें । TextFX मेनू के माध्यम से, पर जाएं Text FX > TextFX Tools > Sort lines case sensitive (at column)। आपका डेटा अब कम से कम से लेकर सबसे लंबे समय तक होना चाहिए। यदि आप उन्हें सबसे लंबे समय तक कम से कम क्रम में चाहते हैं, तो Text FX > TextFX Tools > + Sort ascendingसॉर्ट करने से पहले विकल्प को अनचेक करें । ध्यान दें कि लाइन नंबर कैसे उलटे हैं।

_________4sit
________5amet
_______1Lorem
_______2ipsum
_______3dolor
_6consectetur
_7adipisicing

चरण 5. प्रमुख रिक्त स्थान निकालें।

अग्रणी रिक्त स्थान से मेल खाने के लिए एक अन्य नियमित अभिव्यक्ति का पता लगाएं / बदलें ( Ctrl+ H) का उपयोग करें ।

^ *\d{4}

यह कैरेट और तारांकन के बीच का स्थान है। सभी को कुछ नहीं से बदलें। यदि आपके पास 4-अंकीय रेखा संख्याएँ हैं, तो सभी प्रमुख स्थान और सम्मिलित पंक्ति संख्याएँ निकाल देंगे। {4}अपनी पंक्ति संख्याओं में अंकों की सही संख्या से बदलें ।

sit
amet
Lorem
ipsum
dolor
consectetur
adipisicing

मैक्रो

मैंने नोटपैड ++ की मैक्रो सुविधा का उपयोग करके उपरोक्त चरणों को रिकॉर्ड किया है, और यह काम नहीं करता है। मुझे यकीन नहीं है कि कौन सा कदम विफल हो जाता है, लेकिन मैंने इसका निदान क्यों नहीं किया है। यदि आप इसे बार-बार करते हैं, तो आप इसे स्वचालित करने के लिए शायद AutoHotKey का उपयोग कर सकते हैं।


2
चेतावनी: यह एक स्थिर प्रकार नहीं है। दूसरे शब्दों में, एक ही लंबाई की लाइनें आवश्यक रूप से छंटनी के बाद एक ही क्रम में दिखाई नहीं देंगी - इसके बजाय, उन्हें लेक्सोग्राफिक रूप से क्रमबद्ध किया जाएगा।
बॉब

@ याकूब सही है, यदि आपके पास किसी दी गई लंबाई की रेखाएं हैं, जैसे कि 33 अक्षर, जो उनके लिए एक विशेष क्रम है, जो परिणामों में परिलक्षित नहीं होगा। हम चरण 1 से पहले Alt + C के साथ लाइन नंबर जोड़ सकते हैं (यह सुनिश्चित करने के लिए कि 0 के बराबर लंबाई शामिल है)। फिर, चरण 4 में सफाई करते समय, ^ *\d{5}लाइन संख्याओं के लिए जो भी अंकों का उपयोग किया गया था।
डेन

2
उत्तर को मौजूदा प्रकार के क्रम को बनाए रखने के लिए अद्यतन किया गया है, यह मानते हुए कि यह महत्वपूर्ण है।
डेन

अच्छा है कि यूट्यूब वीडियो में उस आदमी का अनुसरण करने के लिए एक डेन, जहां उसने टिप्पणियों को भी अक्षम कर दिया। क्या आप पाठ के लिए एक लिंक शामिल कर सकते हैं जहाँ आपको लगता है कि यह विफल रहता है, pastebin pastebin.com पर ? और क्या यह केवल मैक्रो, या मैन्युअल रूप से भी असफल रहा?
बारपॉप १op

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

3

नहीं मुझे नहीं लगता कि वहाँ है। सबसे नज़दीकी TextFx प्लगइन है, लेकिन यह एक वर्ण आधारित प्रकार है जो लाइन की लंबाई आधारित नहीं है। आपकी सबसे अच्छी शर्त यह है कि टेक्स्ट को एक स्प्रेडशीट में फेंकें और उसे वहां सॉर्ट करें ( LEN()फ़ंक्शन का उपयोग करके एक अलग गणना कॉलम का उपयोग करके )।


धन्यवाद, पाठ फ़ाइल में लंबी लाइनें और विशाल कुल आकार हैं, इसलिए मैंने स्प्रेडशीट संपादकों को दूर रखा। मुझे प्रश्न को अपडेट करने दें।
हिप्पनिया

@HPM अच्छी तरह से अगर आप नोटपैड ++ के बाहर देखने के इच्छुक हैं तो कमांड लाइन यह करेगी। जैसे प्रत्येक पंक्ति के अंत में लाइन की लंबाई प्राप्त करने के लिए कुछ कमांड का उपयोग करें। तब आप इसे करने के लिए कम से कम पास होंगे।
बार्लॉप

धन्यवाद, यह एक अच्छी सलाह है। क्या मैं एनपी ++ के बारे में उत्सुक हूं कई प्लगइन्स, यह एक क्यों नहीं है?
hpaknia

1

आप CSV फ़ाइलों में N ++ में SQL का उपयोग कर सकते हैं ! उदाहरण के लिए यदि आपके पास:

col1;
hgfhfghfhg;
khjfhgfhfghfgh;
kjhfhgfhfhgfghfhf;
lkjgjghjhg;
lkjgjg;

, आप select * from data order by length(col1) descअवरोही क्रमबद्ध करने के लिए कमांड निष्पादित कर सकते हैं । "डेटा" का अर्थ है वर्तमान फ़ाइल। "col1" - पहले (और अंतिम) कॉलम का नाम।

दुर्भाग्य से वहाँ शायद बग है कि एक-स्तंभ पाठ में लाइनों के बाद सीमांकक को छोड़ने की अनुमति नहीं है।


यह वास्तव में एक महान समाधान है, यदि केवल N ++ में SQL डेटा आउटपुट को कम नहीं करता है। मैंने अभी-अभी आपके समाधान का परीक्षण किया है, और मैंने सभी पंक्तियों के अंत में एक त्वरित रेगेक्स प्रतिस्थापन के साथ सीमांकक जोड़ा है, लेकिन डेटा आउटपुट सब कुछ को कम करने के लिए परिवर्तित करता है, और मेरे डैश को प्रश्न चिह्न से बदल दिया है।
डेन

@Dane (वर्तमान में मेरे पास Notepad ++ तक पहुँच नहीं है।) शायद हर पंक्ति की शुरुआत और अंत में एक एकल उद्धरण जोड़ने की कोशिश करें (और फिर उसके बाद अर्धविराम)? शायद डबल कोट्स?
बॉब

@ याकूब: अच्छा नहीं। लोअरकेस चीज़ का उल्लेख एन ++ प्लग-इन में SQL के रिलीज़ नोटों में भी किया गया है।
डेन

0

या अगर आपके पास linux और nedit है:

ctrl-a
alt-r
perl -e 'print sort { length($a) <=> length($b) } <>'

इतना ही नहीं यह सवाल नहीं पूछा गया है, यह एक ही ओएस प्लेटफॉर्म पर भी लागू नहीं है।
कालेब

यह अभी भी एक उपयोगी उत्तर है। यह एकमात्र ऐसा था जिसने मेरे लिए अच्छा काम किया। उन्होंने कहा कि आपको लिनक्स और नेडिट की आवश्यकता है, इसलिए कोई समस्या नहीं है।
एंथनी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.