Line Sorter
Sortera rader alfabetiskt, efter längd, omvänt eller slumpmässigt
Indatarader
Sorterade rader
Vad är radsortering?
Radsortering är processen att ordna om raderna i ett textblock enligt en specifik regel: alfabetisk ordning, omvänd ordning, radlängd eller en slumpmässig blandning. Att sortera rader online är en vanlig uppgift när man arbetar med loggfiler, CSV-data, konfigurationslistor eller annat oformaterat textinnehåll där ordning spelar roll. Operationen delar upp texten vid radbrytningar, tillämpar en jämförelsefunktion på den resulterande arrayen och sammanfogar de sorterade raderna igen.
De flesta programmeringsspråk sorterar strängar med lexikografisk jämförelse som standard, vilket jämför tecken utifrån deras Unicode-kodpunkter. Det innebär att versaler sorteras före gemener ("Banan" före "äpple"), och siffror sorteras före bokstäver. Lokalkänslig sortering, ibland kallad naturlig sortering eller kollationering, åtgärdar detta genom att tillämpa språkspecifika regler. JavaScripts localeCompare(), Pythons locale.strxfrm() och POSIX-kommandot sort med LC_COLLATE ger alla lokalkänslig ordning.
Sortering efter längd är användbart när du behöver hitta de kortaste eller längsta posterna i en lista, identifiera avvikelser i loggutdata eller organisera objekt efter komplexitet. Omvänd sortering vänder på den befintliga radordningen utan att sortera om, vilket skiljer sig från Z-A-alfabetisk sortering. Slumpmässig blandning tilldelar varje rad en slumpmässig sorteringsnyckel och ger en annan ordning vid varje körning. Att växla mellan lägen på samma indata är snabbare än att skriva ett engångsskript.
Varför använda den här radsorteraren?
Klistra in din text, välj ett sorteringsläge och få resultatet direkt. Ingen kommandoradsinställning, inga skriptfiler, inga paketinstallationer.
Användningsfall för radsorterare
Referens för radsorteringslägen
Verktyget har stöd för sex sorteringslägen. Tabellen nedan beskriver varje läge, jämförelsemetoden det använder och ett exempelresultat för indatalistan: äpple, banan, körsbär, dadel, fikon.
| Läge | Beskrivning | JS-metod | Exempelutdata |
|---|---|---|---|
| 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 |
Sorteringsalgoritmer bakom kulisserna
När du anropar Array.sort() i JavaScript använder V8-motorn (Chrome, Node.js) Timsort sedan 2019. Andra körningsmiljöer använder olika algoritmer. Tabellen nedan jämför de vanligaste sorteringsalgoritmerna som används i standardbibliotek för olika språk. Alla hanterar radsorteringsarbetsbelastningarna i det här verktyget på under en millisekund för typiska indata (under 100 000 rader).
| Algoritm | Används av | Tid | Anteckningar |
|---|---|---|---|
| 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 |
Kodexempel
Sortera rader programmatiskt i JavaScript, Python, Go och på kommandoraden. Varje exempel täcker alfabetisk, längdbaserad och omvänd sortering.
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