ToolDeck

লাইন সর্টার

লাইনগুলি বর্ণানুক্রমিক, দৈর্ঘ্য অনুযায়ী, বিপরীত বা র্যান্ডমলি সাজান

একটি উদাহরণ চেষ্টা করুন

ইনপুট লাইন

সাজানো লাইন

স্থানীয়ভাবে চলে · গোপন তথ্য পেস্ট করা নিরাপদ
সাজানো লাইনগুলি এখানে প্রদর্শিত হবে…

লাইন সাজানো কী?

লাইন সাজানো হলো একটি নির্দিষ্ট নিয়ম অনুযায়ী একটি টেক্সট ব্লকের লাইনগুলি পুনর্বিন্যস্ত করার প্রক্রিয়া: বর্ণানুক্রমিক ক্রম, বিপরীত ক্রম, লাইনের দৈর্ঘ্য, বা র্যান্ডম শাফল। অনলাইনে লাইন সাজানো একটি সাধারণ কাজ যখন লগ ফাইল, CSV ডেটা, কনফিগারেশন তালিকা, বা যেকোনো সাধারণ-টেক্সট বিষয়বস্তুর সাথে কাজ করা হয় যেখানে ক্রম গুরুত্বপূর্ণ। এই প্রক্রিয়া নিউলাইন ক্যারেক্টার দিয়ে টেক্সট ভাগ করে, ফলাফলের অ্যারেতে একটি কম্পারেটর ফাংশন প্রয়োগ করে, এবং সাজানো লাইনগুলি পুনরায় একত্রিত করে।

বেশিরভাগ প্রোগ্রামিং ভাষা ডিফল্টভাবে লেক্সিকোগ্রাফিক তুলনা ব্যবহার করে স্ট্রিং সাজায়, যা তাদের Unicode কোড পয়েন্ট অনুযায়ী ক্যারেক্টার তুলনা করে। এর মানে বড় হাতের অক্ষর ছোট হাতের আগে আসে ("Banana" "apple"-এর আগে), এবং সংখ্যা অক্ষরের আগে আসে। লোকেল-সচেতন সাজানো, যাকে কখনো কখনো ন্যাচারাল সর্ট বা কোলেশন বলা হয়, ভাষা-নির্দিষ্ট নিয়ম প্রয়োগ করে এটি ঠিক করে। JavaScript-এর localeCompare(), Python-এর locale.strxfrm(), এবং LC_COLLATE সহ POSIX sort কমান্ড সবই লোকেল-সচেতন ক্রম প্রদান করে।

দৈর্ঘ্য অনুযায়ী সাজানো তখন কাজে আসে যখন একটি তালিকার সবচেয়ে ছোট বা দীর্ঘ এন্ট্রি খুঁজে বের করতে হয়, লগ আউটপুটে অস্বাভাবিক মান শনাক্ত করতে হয়, বা জটিলতা অনুযায়ী আইটেম সংগঠিত করতে হয়। বিপরীত সাজানো পুনরায় ক্রমবিন্যাস না করে বিদ্যমান লাইন ক্রম উল্টে দেয়, যা Z-A বর্ণানুক্রমিক সাজানো থেকে আলাদা। র্যান্ডম শাফলিং প্রতিটি লাইনে একটি র্যান্ডম সর্ট কী নির্ধারণ করে, প্রতিটি চালনায় ভিন্ন ক্রম তৈরি করে। একই ইনপুটে মোড পরিবর্তন করা একটি এককালীন স্ক্রিপ্ট লেখার চেয়ে দ্রুত।

কেন এই লাইন সর্টার ব্যবহার করবেন?

আপনার টেক্সট পেস্ট করুন, একটি সর্ট মোড বেছে নিন, এবং তাৎক্ষণিকভাবে ফলাফল পান। কোনো কমান্ড-লাইন সেটআপ নেই, কোনো স্ক্রিপ্ট ফাইল নেই, কোনো প্যাকেজ ইনস্টলেশন নেই।

তাৎক্ষণিক সাজানো
আপনি টাইপ বা পেস্ট করার সাথে সাথে ফলাফল প্রদর্শিত হয়। ছয়টি সর্ট মোডের মধ্যে পরিবর্তন করুন এবং কিছু পুনরায় চালানো ছাড়াই আউটপুট তুলনা করুন।
🔒
গোপনীয়তা-সুরক্ষিত প্রক্রিয়াকরণ
সমস্ত সাজানো JavaScript ব্যবহার করে আপনার ব্রাউজারে চলে। আপনার টেক্সট আপনার ডিভাইসে থাকে। কোনো সার্ভারে কিছু আপলোড বা লগ করা হয় না।
🔀
ছয়টি সর্ট মোড
A-Z, Z-A, সবচেয়ে ছোট প্রথমে, সবচেয়ে দীর্ঘ প্রথমে, বিপরীত ক্রম, এবং র্যান্ডম শাফল। একটি ইনপুটেই সবচেয়ে সাধারণ লাইন-ক্রমবিন্যাসের কাজগুলো সম্পন্ন হয়।
📋
কোনো অ্যাকাউন্ট প্রয়োজন নেই
পেজ খুলুন এবং সাজানো শুরু করুন। কোনো নিবন্ধন নেই, কোনো এক্সটেনশন নেই, কোনো ডেস্কটপ অ্যাপ নেই। যেকোনো আধুনিক ব্রাউজারযুক্ত ডিভাইসে কাজ করে।

লাইন সর্টারের ব্যবহারের ক্ষেত্র

ফ্রন্টএন্ড ডেভেলপমেন্ট
CSS ক্লাস তালিকা, ইমপোর্ট স্টেটমেন্ট, বা i18n অনুবাদ কী বর্ণানুক্রমিকভাবে সাজান। সামঞ্জস্যপূর্ণ ক্রম ভার্সন কন্ট্রোলে মার্জ দ্বন্দ্ব কমায় এবং কোড রিভিউ দ্রুত করে।
ব্যাকএন্ড ইঞ্জিনিয়ারিং
কমিট করার আগে package.json, requirements.txt, বা go.mod-এ নির্ভরতা তালিকা সাজান। CREATE TABLE স্টেটমেন্ট তৈরি বা স্কিমা তুলনা করার সময় SQL কলামের নাম সাজান।
DevOps ও অবকাঠামো
.env ফাইলে পরিবেশ ভেরিয়েবলের নাম, Kubernetes ConfigMap এন্ট্রি, বা Terraform ভেরিয়েবল ব্লক সাজান। বর্ণানুক্রমিক ক্রম রিভিউয়ের সময় ডুপ্লিকেট এবং অনুপস্থিত মান শনাক্ত করতে সাহায্য করে।
QA ও টেস্ট অটোমেশন
ব্যর্থতা দ্রুত বিচ্ছিন্ন করতে টাইমস্ট্যাম্প বা বার্তা অনুযায়ী টেস্ট আউটপুট লগ সাজান। অ্যাপ্লিকেশনের আচরণ ঢোকানোর ক্রমের উপর নির্ভর করে না তা যাচাই করতে টেস্ট ইনপুট ডেটা র্যান্ডমাইজ করুন।
ডেটা ইঞ্জিনিয়ারিং
স্কিমা মাইগ্রেশন স্ক্রিপ্ট লেখার আগে CSV হেডার বা কলাম তালিকা সাজান। ডেটা পাইপলাইনে কাটা সারি বা অস্বাভাবিকভাবে দীর্ঘ মান খুঁজে পেতে দৈর্ঘ্য অনুযায়ী ডেটা নমুনা লাইন সাজান।
শিক্ষার্থী ও গবেষকরা
শব্দভান্ডারের তালিকা, গ্রন্থপঞ্জি এন্ট্রি, বা অধ্যয়নের নোট বর্ণানুক্রমিকভাবে সাজান। আলাদা অ্যাপ ইনস্টল না করে র্যান্ডমাইজড পর্যালোচনা সেশনের জন্য ফ্ল্যাশকার্ড লাইন শাফল করুন।

লাইন সর্ট মোড রেফারেন্স

এই টুল ছয়টি সর্ট মোড সমর্থন করে। নিচের সারণি প্রতিটি মোড, এটি যে তুলনা পদ্ধতি ব্যবহার করে, এবং ইনপুট তালিকার জন্য একটি নমুনা ফলাফল বর্ণনা করে: apple, banana, cherry, date, fig।

মোডবিবরণJS পদ্ধতিউদাহরণ আউটপুট
A-ZAlphabetical ascendinglocaleCompare()apple, banana, cherry
Z-AAlphabetical descendinglocaleCompare() reversedcherry, banana, apple
Length (short)Shortest line firsta.length - b.lengthfig, date, apple, banana
Length (long)Longest line firstb.length - a.lengthbanana, apple, date, fig
ReverseFlip line order, no reorderingArray.reverse()Last line becomes first
RandomRandomized comparator (biased)Math.random() - 0.5Different every run

পর্দার আড়ালে সাজানোর অ্যালগরিদম

JavaScript-এ Array.sort() কল করলে V8 ইঞ্জিন (Chrome, Node.js) ২০১৯ সাল থেকে Timsort ব্যবহার করে। অন্যান্য রানটাইম ভিন্ন অ্যালগরিদম ব্যবহার করে। নিচের সারণি ভাষা স্ট্যান্ডার্ড লাইব্রেরিতে ব্যবহৃত সবচেয়ে সাধারণ সাজানোর অ্যালগরিদম তুলনা করে। সবই এই টুলের লাইন-সাজানোর কাজ সাধারণ ইনপুটের জন্য (১,০০,০০০ লাইনের কম) এক মিলিসেকেন্ডেরও কম সময়ে সম্পন্ন করে।

অ্যালগরিদমব্যবহারকারীসময়নোট
TimsortPython, Java (Arrays.sort)O(n log n)Stable, fast on partially sorted data
QuicksortC stdlib, V8 (older)O(n log n)In-place, unstable by default
Merge sortMost stable-sort implementationsO(n log n)Stable, predictable, uses extra memory
IntrosortC++ std::sort, .NETO(n log n)Hybrid: quicksort + heapsort fallback
Radix sortFixed-length keys, integersO(nk)Non-comparative, linear for short keys

কোড উদাহরণ

JavaScript, Python, Go, এবং কমান্ড লাইনে প্রোগ্রামেটিকভাবে লাইন সাজান। প্রতিটি উদাহরণে বর্ণানুক্রমিক, দৈর্ঘ্য-ভিত্তিক, এবং বিপরীত সাজানো অন্তর্ভুক্ত রয়েছে।

JavaScript
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')
Python
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
Go
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
}
CLI (bash)
# 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

সচরাচর জিজ্ঞাসা

A-Z সাজানো এবং ন্যাচারাল সর্টের মধ্যে পার্থক্য কী?
A-Z সাজানো (লেক্সিকোগ্রাফিক) Unicode কোড পয়েন্ট অনুযায়ী চরিত্র তুলনা করে। এর মানে "item10" "item2"-এর আগে আসে কারণ '1' চরিত্রের কোড পয়েন্ট '2'-এর চেয়ে কম। ন্যাচারাল সর্ট এমবেডেড সংখ্যাকে সংখ্যামানিক মান হিসেবে গণ্য করে, তাই "item2" "item10"-এর আগে আসে। এই টুল localeCompare() এর মাধ্যমে লোকেল-সচেতন লেক্সিকোগ্রাফিক সাজানো ব্যবহার করে, যা অ্যাকসেন্টযুক্ত চরিত্র সঠিকভাবে পরিচালনা করে কিন্তু সংখ্যার উপর ন্যাচারাল সর্ট করে না।
লাইন সাজালে কি আমার টেক্সট সার্ভারে পাঠানো হয়?
না। সমস্ত সাজানো আপনার ব্রাউজারে JavaScript-এর Array.sort() পদ্ধতি ব্যবহার করে হয়। টেক্সট কখনো আপনার ডিভাইস ছেড়ে যায় না। আপনি DevTools-এ ব্রাউজারের নেটওয়ার্ক ট্যাব খুলে নিশ্চিত করতে পারেন যে টেক্সট পেস্ট করে সাজালে কোনো অনুরোধ করা হয় না।
এই টুল কত লাইন পরিচালনা করতে পারে?
টুলটি কয়েক হাজার লাইনের সাথে ভালোভাবে কাজ করে। V8-এ JavaScript-এর Timsort বাস্তবায়ন আধুনিক হার্ডওয়্যারে ১০০ মিলিসেকেন্ডেরও কম সময়ে ১,০০,০০০ লাইন পরিচালনা করে। কয়েক মেগাবাইটের বেশি ফাইলের জন্য, Unix sort কমান্ডের মতো CLI টুল বেশি দক্ষ কারণ এটি ডিস্ক-ভিত্তিক মার্জ সর্ট এবং একাধিক থ্রেড ব্যবহার করতে পারে।
কেস-সংবেদনহীন সাজানো কীভাবে কাজ করে?
এই টুল { sensitivity: 'base' } বিকল্পসহ String.localeCompare() ব্যবহার করে, যা তুলনাকে কেস-সংবেদনহীন করে তোলে যাতে "Apple" এবং "apple" আলাদা গোষ্ঠীতে না গিয়ে একসাথে সাজানো হয়। ডিফল্টভাবে, localeCompare() কেস-সংবেদনশীল; কেস-সংবেদনহীন আচরণের জন্য স্পষ্ট বিকল্প প্রয়োজন। যদি আপনার কঠোর কেস-সংবেদনশীল সাজানো দরকার হয় যেখানে বড় হাতের অক্ষর প্রথমে আসে, -f ফ্ল্যাগ ছাড়া Unix sort কমান্ড সেই আচরণ দেয়।
আমি কি একই সাথে লাইন সাজাতে এবং ডুপ্লিকেট সরাতে পারি?
এই টুল লাইন সাজায় কিন্তু ডুপ্লিকেট সরায় না। ডুপ্লিকেট লাইন সরাতে একই বিভাগে Duplicate Line Remover টুল ব্যবহার করুন। আপনি এখানে আপনার টেক্সট প্রথমে সাজাতে পারেন, তারপর পরিষ্কার, অনন্য, সাজানো তালিকার জন্য ফলাফল ডুপ্লিকেট রিমুভারে পেস্ট করতে পারেন।
বিপরীত সর্ট এবং Z-A সর্টের মধ্যে পার্থক্য কী?
বিপরীত সর্ট মূল লাইন ক্রম উল্টে দেয়: শেষ লাইনটি প্রথম হয়, শেষের দ্বিতীয় লাইনটি দ্বিতীয় হয়, এবং এভাবে চলতে থাকে। কোনো বর্ণানুক্রমিক তুলনা জড়িত নয়। Z-A সর্ট তাদের মূল অবস্থান নির্বিশেষে লাইনগুলি অবরোহী বর্ণানুক্রমিক ক্রমে সাজায়। যদি আপনার ইনপুট ইতিমধ্যে A-Z সাজানো থাকে, বিপরীত এবং Z-A একই আউটপুট তৈরি করে, কিন্তু অসাজানো ইনপুটের জন্য ফলাফল আলাদা হয়।
আমি কীভাবে একটি নির্দিষ্ট কলাম বা ক্ষেত্র অনুযায়ী লাইন সাজাব?
এই টুল সম্পূর্ণ লাইনের বিষয়বস্তু অনুযায়ী সাজায়। একটি নির্দিষ্ট কলাম অনুযায়ী সাজাতে (যেমন, ট্যাব-বিভক্ত ফাইলের দ্বিতীয় ক্ষেত্র), -k ফ্ল্যাগসহ Unix sort কমান্ড ব্যবহার করুন: sort -t$'\t' -k2,2 file.txt। Python-এ প্রতিটি লাইন বিভক্ত করুন এবং একটি কী ফাংশন ব্যবহার করুন: sorted(lines, key=lambda x: x.split('\t')[1])।