ToolDeck

مرتب‌کننده خطوط

خطوط را به‌صورت الفبایی، بر اساس طول، معکوس یا تصادفی مرتب کنید

یک مثال امتحان کنید

خطوط ورودی

خطوط مرتب‌شده

به‌صورت محلی اجرا می‌شود · جای‌گذاری اسرار امن است
خطوط مرتب‌شده در اینجا نمایش داده می‌شوند…

مرتب‌سازی خطوط چیست؟

مرتب‌سازی خطوط فرایند تنظیم مجدد خطوط یک بلوک متنی بر اساس یک قانون مشخص است: ترتیب الفبایی، ترتیب معکوس، طول خط، یا ترتیب تصادفی. مرتب‌سازی خطوط به‌صورت آنلاین یکی از کارهای رایج هنگام کار با فایل‌های log، داده‌های CSV، فهرست‌های پیکربندی، یا هر محتوای متن ساده‌ای است که ترتیب در آن اهمیت دارد. این عملیات متن را بر اساس کاراکترهای خط جدید تقسیم می‌کند، یک تابع مقایسه را روی آرایه حاصل اعمال می‌کند و خطوط مرتب‌شده را دوباره به هم می‌پیوندد.

اکثر زبان‌های برنامه‌نویسی رشته‌ها را به‌طور پیش‌فرض با مقایسه لغت‌نامه‌ای مرتب می‌کنند که کاراکترها را بر اساس نقطه‌کد Unicode مقایسه می‌کند. یعنی حروف بزرگ قبل از حروف کوچک مرتب می‌شوند ("Banana" قبل از "apple")، و ارقام قبل از حروف قرار می‌گیرند. مرتب‌سازی آگاه به زبان، که گاهی natural sort یا collation نامیده می‌شود، این مشکل را با اعمال قوانین خاص هر زبان برطرف می‌کند. localeCompare()‌ در JavaScript، locale.strxfrm()‌ در Python، و دستور sort در POSIX با LC_COLLATE همگی مرتب‌سازی آگاه به زبان را ارائه می‌دهند.

مرتب‌سازی بر اساس طول زمانی مفید است که نیاز دارید کوتاه‌ترین یا بلندترین ورودی‌ها در یک فهرست را پیدا کنید، مقادیر غیرعادی در خروجی log را شناسایی کنید، یا موارد را بر اساس پیچیدگی سازماندهی کنید. مرتب‌سازی معکوس ترتیب موجود خطوط را برمی‌گرداند بدون اینکه مجدداً مرتب شود، که با مرتب‌سازی الفبایی Z-A تفاوت دارد. ترتیب تصادفی به هر خط یک کلید مرتب‌سازی تصادفی اختصاص می‌دهد و در هر بار اجرا ترتیب متفاوتی تولید می‌کند. تغییر بین حالت‌ها روی همان ورودی از نوشتن یک اسکریپت یک‌بار مصرف سریع‌تر است.

چرا از این مرتب‌کننده خطوط استفاده کنیم؟

متن خود را جای‌گذاری کنید، یک حالت مرتب‌سازی انتخاب کنید و نتیجه را بی‌درنگ دریافت کنید. بدون راه‌اندازی خط فرمان، بدون فایل اسکریپت، بدون نصب بسته.

مرتب‌سازی آنی
نتایج با هر تایپ یا جای‌گذاری نمایش داده می‌شوند. بین شش حالت مرتب‌سازی جابجا شوید و خروجی را بدون اجرای مجدد هر چیزی مقایسه کنید.
🔒
پردازش با اولویت حریم خصوصی
تمام مرتب‌سازی‌ها در مرورگر شما با JavaScript انجام می‌شود. متن شما روی دستگاه‌تان باقی می‌ماند. هیچ چیزی به سرور ارسال یا ثبت نمی‌شود.
🔀
شش حالت مرتب‌سازی
A-Z، Z-A، کوتاه‌ترین اول، بلندترین اول، ترتیب معکوس و ترتیب تصادفی. یک ورودی رایج‌ترین وظایف مرتب‌سازی خطوط را پوشش می‌دهد.
📋
بدون نیاز به حساب کاربری
صفحه را باز کنید و شروع به مرتب‌سازی کنید. بدون ثبت‌نام، بدون افزونه، بدون برنامه دسکتاپ. روی هر دستگاهی با مرورگر مدرن کار می‌کند.

موارد استفاده از مرتب‌کننده خطوط

توسعه فرانت‌اند
فهرست‌های class در CSS، دستورات import، یا کلیدهای ترجمه i18n را به‌صورت الفبایی مرتب کنید. این کار تعارضات ادغام در کنترل نسخه را کاهش می‌دهد و بررسی کد را سریع‌تر می‌کند.
مهندسی بک‌اند
فهرست‌های وابستگی در package.json، requirements.txt، یا go.mod را پیش از commit مرتب کنید. نام ستون‌های SQL را هنگام ساختن دستورات CREATE TABLE یا مقایسه تفاوت‌های schema مرتب کنید.
DevOps و زیرساخت
نام متغیرهای محیطی در فایل‌های .env، ورودی‌های Kubernetes ConfigMap، یا بلوک‌های متغیر Terraform را مرتب کنید. ترتیب الفبایی به شما امکان می‌دهد تکراری‌ها و مقادیر گمشده را در حین بررسی شناسایی کنید.
QA و اتوماسیون آزمون
لاگ‌های خروجی آزمون را بر اساس زمان یا پیام مرتب کنید تا خرابی‌ها را سریع جدا کنید. داده‌های ورودی آزمون را تصادفی کنید تا بررسی کنید رفتار برنامه به ترتیب درج وابسته نیست.
مهندسی داده
سرصفحه‌های CSV یا فهرست‌های ستون را پیش از نوشتن اسکریپت‌های انتقال schema مرتب کنید. خطوط نمونه داده را بر اساس طول مرتب کنید تا ردیف‌های کوتاه‌شده یا مقادیر غیرمعمولاً طولانی در یک خط لوله داده را پیدا کنید.
دانشجویان و یادگیرندگان
فهرست‌های لغت، ورودی‌های کتاب‌شناسی، یا یادداشت‌های مطالعاتی را به‌صورت الفبایی مرتب کنید. خطوط کارت‌های فلشی را برای جلسات مرور تصادفی بدون نصب برنامه جداگانه مخلوط کنید.

مرجع حالت‌های مرتب‌سازی خطوط

این ابزار از شش حالت مرتب‌سازی پشتیبانی می‌کند. جدول زیر هر حالت، روش مقایسه‌ای که استفاده می‌کند، و یک نتیجه نمونه برای فهرست ورودی: 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

الگوریتم‌های مرتب‌سازی در پس‌زمینه

هنگامی که Array.sort() را در JavaScript فراخوانی می‌کنید، موتور 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 و natural sort چیست؟
مرتب‌سازی A-Z (لغت‌نامه‌ای) کاراکترها را بر اساس نقطه‌کد Unicode مقایسه می‌کند. یعنی «item10» قبل از «item2» مرتب می‌شود زیرا کاراکتر '1' نقطه‌کد پایین‌تری نسبت به '2' دارد. Natural sort اعداد تعبیه‌شده را به‌عنوان مقادیر عددی در نظر می‌گیرد، بنابراین «item2» قبل از «item10» می‌آید. این ابزار از مرتب‌سازی لغت‌نامه‌ای آگاه به زبان از طریق localeCompare() استفاده می‌کند که کاراکترهای لهجه‌دار را به‌درستی مدیریت می‌کند اما natural sort روی اعداد انجام نمی‌دهد.
آیا متن من هنگام مرتب‌سازی خطوط به سرور ارسال می‌شود؟
خیر. تمام مرتب‌سازی‌ها در مرورگر شما با استفاده از متد Array.sort() در JavaScript انجام می‌شود. متن هرگز از دستگاه شما خارج نمی‌شود. می‌توانید این را با باز کردن تب Network در DevTools مرورگر تأیید کنید و مطمئن شوید که هنگام جای‌گذاری و مرتب‌سازی متن، هیچ درخواستی ارسال نمی‌شود.
این ابزار چه تعداد خط می‌تواند مدیریت کند؟
این ابزار با ده‌ها هزار خط به‌خوبی کار می‌کند. پیاده‌سازی Timsort در V8 می‌تواند ۱۰۰٬۰۰۰ خط را در کمتر از ۱۰۰ میلی‌ثانیه روی سخت‌افزار مدرن پردازش کند. برای فایل‌های بزرگ‌تر از چند مگابایت، ابزار خط فرمان مانند دستور sort در Unix کارآمدتر است زیرا می‌تواند از مرتب‌سازی ادغامی مبتنی بر دیسک و چندین رشته استفاده کند.
مرتب‌سازی بدون حساسیت به حروف بزرگ و کوچک چگونه کار می‌کند؟
این ابزار از String.localeCompare() با گزینه { sensitivity: 'base' } استفاده می‌کند که مقایسه را بدون حساسیت به حروف بزرگ و کوچک می‌کند تا «Apple» و «apple» به‌جای گروه‌های جداگانه کنار هم مرتب شوند. به‌طور پیش‌فرض، localeCompare() به حروف بزرگ و کوچک حساس است؛ گزینه صریح برای رفتار بدون حساسیت الزامی است. اگر به مرتب‌سازی دقیق با حساسیت به حروف بزرگ و کوچک نیاز دارید که در آن حروف بزرگ اول بیایند، دستور sort در Unix بدون پرچم -f این رفتار را ارائه می‌دهد.
آیا می‌توانم خطوط را مرتب کنم و در همان زمان تکراری‌ها را حذف کنم؟
این ابزار خطوط را مرتب می‌کند اما تکراری‌ها را حذف نمی‌کند. برای حذف خطوط تکراری، از ابزار حذف‌کننده خطوط تکراری در همان دسته‌بندی استفاده کنید. ابتدا می‌توانید متن خود را اینجا مرتب کنید، سپس نتیجه را در ابزار حذف تکراری‌ها برای یک فهرست تمیز، منحصربه‌فرد و مرتب‌شده جای‌گذاری کنید.
تفاوت مرتب‌سازی معکوس و مرتب‌سازی Z-A چیست؟
مرتب‌سازی معکوس ترتیب اصلی خطوط را برمی‌گرداند: آخرین خط به اول تبدیل می‌شود، دومی از آخر به دومین، و به همین ترتیب. هیچ مقایسه الفبایی انجام نمی‌شود. مرتب‌سازی Z-A خطوط را به ترتیب الفبایی نزولی تنظیم می‌کند صرف‌نظر از موقعیت اصلی آن‌ها. اگر ورودی شما از قبل به ترتیب A-Z مرتب شده باشد، معکوس و Z-A خروجی یکسانی تولید می‌کنند، اما برای ورودی مرتب‌نشده نتایج متفاوت خواهند بود.
چگونه می‌توانم خطوط را بر اساس یک ستون یا فیلد مشخص مرتب کنم؟
این ابزار بر اساس کل محتوای خط مرتب می‌کند. برای مرتب‌سازی بر اساس یک ستون مشخص (مثلاً فیلد دوم در یک فایل tab-separated)، از دستور sort در Unix با پرچم -k استفاده کنید: sort -t$'\t' -k2,2 file.txt. در Python، هر خط را تقسیم کنید و از یک تابع key استفاده کنید: sorted(lines, key=lambda x: x.split('\t')[1]).