लाइन सॉर्टर
पंक्तियों को वर्णमाला, लंबाई या यादृच्छिक क्रम में क्रमबद्ध करें या क्रम उलटें
इनपुट पंक्तियाँ
क्रमबद्ध पंक्तियाँ
पंक्ति क्रमबद्धता क्या है?
पंक्ति क्रमबद्धता एक विशिष्ट नियम के अनुसार पाठ खंड की पंक्तियों को पुनर्व्यवस्थित करने की प्रक्रिया है: वर्णमाला क्रम, उल्टा क्रम, पंक्ति की लंबाई, या रैंडम शफ़ल। लॉग फ़ाइलों, CSV डेटा, कॉन्फ़िगरेशन सूचियों या किसी भी सादे-टेक्स्ट सामग्री के साथ काम करते समय ऑनलाइन पंक्तियाँ क्रमबद्ध करना एक सामान्य कार्य है जहाँ क्रम महत्त्वपूर्ण होता है। यह संक्रिया नई पंक्ति वर्णों पर टेक्स्ट को विभाजित करती है, परिणामी ऐरे पर एक तुलना फ़ंक्शन लागू करती है, और क्रमबद्ध पंक्तियों को वापस जोड़ती है।
अधिकांश प्रोग्रामिंग भाषाएँ डिफ़ॉल्ट रूप से लेक्सिकोग्राफ़िक तुलना का उपयोग करके स्ट्रिंग क्रमबद्ध करती हैं, जो Unicode कोड पॉइंट के आधार पर वर्णों की तुलना करती है। इसका अर्थ है कि बड़े अक्षर (uppercase) छोटे अक्षरों (lowercase) से पहले आते हैं ("Banana" से पहले "apple"), और अंक अक्षरों से पहले आते हैं। Locale-aware sorting, जिसे कभी-कभी natural order या collation कहा जाता है, भाषा-specific नियम लागू करके इसे ठीक करती है। JavaScript का localeCompare(), Python का locale.strxfrm(), और LC_COLLATE के साथ POSIX sort command — ये सभी locale-aware sorting provide करते हैं।
लंबाई के अनुसार क्रमबद्धता तब उपयोगी होती है जब आपको किसी सूची में सबसे छोटी या सबसे लंबी प्रविष्टियाँ ढूँढनी हों, लॉग आउटपुट में असामान्य मान पहचानने हों, या जटिलता के अनुसार वस्तुओं को व्यवस्थित करना हो। उलटा क्रम मौजूदा पंक्ति क्रम को पलट देता है बिना पुनर्व्यवस्थित किए, जो Z-A वर्णमाला क्रमबद्धता से भिन्न है। रैंडम शफ़ल प्रत्येक पंक्ति को एक रैंडम key देता है, जिससे हर बार अलग क्रम मिलता है। एक ही इनपुट पर मोड बदलना एकमुश्त स्क्रिप्ट लिखने से तेज़ होता है।
यह Line Sorter क्यों उपयोग करें?
अपना टेक्स्ट paste करें, एक sorting mode चुनें, और तुरंत result देखें। कोई कमांड-लाइन सेटअप नहीं, कोई स्क्रिप्ट फ़ाइल नहीं, कोई पैकेज इंस्टॉलेशन नहीं।
Line Sorter के उपयोग के अवसर
पंक्ति क्रमबद्धता मोड संदर्भ
यह उपकरण छह क्रमबद्धता मोड का समर्थन करता है। नीचे दी गई तालिका प्रत्येक मोड, उसके द्वारा उपयोग की जाने वाली तुलना पद्धति और इनपुट सूची: apple, banana, cherry, date, fig के लिए एक नमूना परिणाम दर्शाती है।
| मोड | विवरण | JS मेथड | उदाहरण आउटपुट |
|---|---|---|---|
| A-Z | Alphabetical ascending | localeCompare() | apple, banana, cherry |
| Z-A | Alphabetical descending | localeCompare() reversed | cherry, banana, apple |
| Length (short) | Shortest line first | a.length - b.length | fig, date, apple, banana |
| Length (long) | Longest line first | b.length - a.length | banana, apple, date, fig |
| Reverse | Flip line order, no reordering | Array.reverse() | Last line becomes first |
| Random | Randomized comparator (biased) | Math.random() - 0.5 | Different every run |
पर्दे के पीछे के क्रमबद्धता एल्गोरिदम
जब आप JavaScript में Array.sort() कॉल करते हैं, तो V8 इंजन (Chrome, Node.js) 2019 से Timsort उपयोग करता है। अन्य रनटाइम भिन्न एल्गोरिदम उपयोग करते हैं। नीचे दी गई तालिका भाषा मानक पुस्तकालयों में उपयोग किए जाने वाले सबसे सामान्य क्रमबद्धता एल्गोरिदम की तुलना करती है। सभी इस उपकरण में पंक्ति-क्रमबद्धता कार्यभार को सामान्य इनपुट (1,00,000 पंक्तियों से कम) के लिए एक मिलीसेकंड से कम में संभालते हैं।
| एल्गोरिदम | उपयोग में | समय | टिप्पणियाँ |
|---|---|---|---|
| Timsort | Python, Java (Arrays.sort) | O(n log n) | Stable, fast on partially sorted data |
| Quicksort | C stdlib, V8 (older) | O(n log n) | In-place, unstable by default |
| Merge sort | Most stable-sort implementations | O(n log n) | Stable, predictable, uses extra memory |
| Introsort | C++ std::sort, .NET | O(n log n) | Hybrid: quicksort + heapsort fallback |
| Radix sort | Fixed-length keys, integers | O(nk) | Non-comparative, linear for short keys |
कोड उदाहरण
JavaScript, Python, Go और कमांड लाइन में प्रोग्रामेटिक रूप से पंक्तियाँ क्रमबद्ध करें। प्रत्येक उदाहरण वर्णमाला, लंबाई-आधारित और उलटी क्रमबद्धता को शामिल करता है।
const text = `banana
apple
cherry
date
fig`
// Sort A-Z (locale-aware)
const az = text.split('\n').sort((a, b) => a.localeCompare(b)).join('\n')
// → "apple\nbanana\ncherry\ndate\nfig"
// Sort by line length, shortest first
const byLen = text.split('\n').sort((a, b) => a.length - b.length).join('\n')
// → "fig\ndate\napple\nbanana\ncherry"
// Reverse line order (no alphabetical sorting)
const reversed = text.split('\n').reverse().join('\n')
// → "fig\ndate\ncherry\napple\nbanana"
// Remove duplicates and sort
const unique = [...new Set(text.split('\n'))].sort().join('\n')text = """banana apple cherry date fig""" lines = text.splitlines() # Sort A-Z (case-insensitive) az = sorted(lines, key=str.lower) # → ['apple', 'banana', 'cherry', 'date', 'fig'] # Sort by line length by_len = sorted(lines, key=len) # → ['fig', 'date', 'apple', 'banana', 'cherry'] # Reverse original order rev = lines[::-1] # → ['fig', 'date', 'cherry', 'apple', 'banana'] # Shuffle randomly import random random.shuffle(lines) # modifies in place
package main
import (
"fmt"
"sort"
"strings"
)
func main() {
text := "banana\napple\ncherry\ndate\nfig"
lines := strings.Split(text, "\n")
// Sort A-Z
sort.Strings(lines)
fmt.Println(strings.Join(lines, "\n"))
// → apple\nbanana\ncherry\ndate\nfig
// Sort by length
sort.Slice(lines, func(i, j int) bool {
return len(lines[i]) < len(lines[j])
})
fmt.Println(strings.Join(lines, "\n"))
// → fig\ndate\napple\nbanana\ncherry
}# Sort lines A-Z
sort file.txt
# Sort lines Z-A (reverse)
sort -r file.txt
# Sort numerically (first field)
sort -n data.txt
# Sort by line length (awk + sort + cut)
awk '{ print length, $0 }' file.txt | sort -n | cut -d' ' -f2-
# Shuffle lines randomly
shuf file.txt # GNU coreutils
sort -R file.txt # alternative (not truly uniform)
# Sort and remove duplicates
sort -u file.txt