Line Sorter

텍스트 줄을 알파벳순, 길이순, 역순 또는 무작위로 정렬합니다

예시 시도

입력 줄

정렬된 줄

로컬에서 실행 · 시크릿 붙여넣기 안전
정렬된 줄이 여기에 표시됩니다…

줄 정렬이란?

줄 정렬은 텍스트 블록의 줄을 특정 규칙에 따라 재배열하는 작업입니다. 알파벳순, 역순, 줄 길이순, 무작위 섞기 등이 가능합니다. 온라인에서 줄을 정렬하는 것은 로그 파일, CSV 데이터, 설정 목록 또는 순서가 중요한 일반 텍스트 콘텐츠를 다룰 때 흔히 필요한 작업입니다. 이 작업은 텍스트를 줄바꿈 문자 기준으로 분리하고, 결과 배열에 비교 함수를 적용한 뒤, 정렬된 줄을 다시 합쳐 출력합니다.

대부분의 프로그래밍 언어는 기본적으로 사전순(lexicographic) 비교를 사용하여 문자열을 정렬합니다. 이 방식은 Unicode 코드 포인트를 기준으로 문자를 비교하므로, 대문자가 소문자보다 앞에 오고("Banana"가 "apple"보다 앞) 숫자가 문자보다 앞에 위치합니다. 자연 정렬 또는 콜레이션이라고도 불리는 로케일 인식 정렬은 언어별 규칙을 적용하여 이를 보정합니다. JavaScript의 localeCompare(), Python의 locale.strxfrm(), LC_COLLATE를 사용한 POSIX sort 명령 모두 로케일 인식 정렬을 제공합니다.

길이순 정렬은 목록에서 가장 짧거나 긴 항목을 찾거나, 로그 출력에서 이상값을 식별하거나, 항목을 복잡도 순으로 구성할 때 유용합니다. 역순 정렬은 재정렬 없이 기존 줄 순서를 뒤집는 것으로, Z-A 알파벳 정렬과는 다릅니다. 무작위 섞기는 각 줄에 무작위 정렬 키를 부여하여 실행할 때마다 다른 순서를 만들어냅니다. 동일한 입력에서 모드를 전환하는 것이 일회성 스크립트를 작성하는 것보다 훨씬 빠릅니다.

이 줄 정렬기를 사용하는 이유

텍스트를 붙여넣고 정렬 모드를 선택하면 즉시 결과를 얻습니다. 커맨드라인 설정, 스크립트 파일, 패키지 설치가 필요 없습니다.

즉각적인 정렬
입력하거나 붙여넣는 즉시 결과가 표시됩니다. 6가지 정렬 모드 사이를 전환하며 다시 실행하지 않고도 결과를 비교할 수 있습니다.
🔒
개인정보 보호 우선 처리
모든 정렬 작업이 JavaScript를 사용하여 브라우저에서 실행됩니다. 텍스트는 기기에 남아 있습니다. 서버에 업로드되거나 기록되는 것은 없습니다.
🔀
6가지 정렬 모드
A-Z, Z-A, 가장 짧은 것 먼저, 가장 긴 것 먼저, 역순, 무작위 섞기. 하나의 입력으로 가장 일반적인 줄 순서 정렬 작업을 모두 처리합니다.
📋
계정 불필요
페이지를 열고 바로 정렬을 시작합니다. 회원가입, 확장 프로그램, 데스크톱 앱이 필요 없습니다. 최신 브라우저가 있는 모든 기기에서 작동합니다.

줄 정렬기 활용 사례

프론트엔드 개발
CSS 클래스 목록, import 문, 또는 i18n 번역 키를 알파벳순으로 정렬합니다. 일관된 순서는 버전 관리에서 병합 충돌을 줄이고 코드 리뷰를 빠르게 합니다.
백엔드 엔지니어링
커밋 전에 package.json, requirements.txt, go.mod의 의존성 목록을 정렬합니다. CREATE TABLE 문을 작성하거나 스키마 차이를 비교할 때 SQL 컬럼 이름을 정렬합니다.
DevOps 및 인프라
.env 파일의 환경 변수 이름, Kubernetes ConfigMap 항목, Terraform 변수 블록을 정렬합니다. 알파벳순 정렬을 통해 리뷰 중 중복이나 누락된 값을 쉽게 발견할 수 있습니다.
QA 및 테스트 자동화
테스트 출력 로그를 타임스탬프나 메시지 기준으로 정렬하여 실패를 빠르게 찾아냅니다. 테스트 입력 데이터를 무작위로 섞어 애플리케이션 동작이 삽입 순서에 의존하지 않는지 검증합니다.
데이터 엔지니어링
스키마 마이그레이션 스크립트를 작성하기 전에 CSV 헤더나 컬럼 목록을 정렬합니다. 데이터 파이프라인에서 잘린 행이나 비정상적으로 긴 값을 찾기 위해 데이터 샘플 줄을 길이순으로 정렬합니다.
학생 및 학습자
어휘 목록, 참고문헌 항목, 학습 노트를 알파벳순으로 정렬합니다. 별도 앱 설치 없이 무작위 복습을 위해 플래시카드 줄을 섞습니다.

줄 정렬 모드 참조

이 도구는 6가지 정렬 모드를 지원합니다. 아래 표는 각 모드, 사용하는 비교 방법, 그리고 입력 목록(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)은 2019년부터 Timsort를 사용합니다. 다른 런타임은 서로 다른 알고리즘을 사용합니다. 아래 표는 언어 표준 라이브러리에서 사용되는 가장 일반적인 정렬 알고리즘을 비교합니다. 모두 이 도구의 줄 정렬 작업을 일반적인 입력(100,000줄 미만)에서 1밀리초 이내에 처리합니다.

알고리즘사용처시간 복잡도비고
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 코드 포인트를 기준으로 문자를 비교합니다. '1'의 코드 포인트가 '2'보다 낮기 때문에 "item10"이 "item2"보다 앞에 정렬됩니다. 자연 정렬은 내장된 숫자를 수치로 처리하므로 "item2"가 "item10" 앞에 옵니다. 이 도구는 localeCompare()를 통해 로케일 인식 사전순 정렬을 사용하며, 악센트 문자를 올바르게 처리하지만 숫자에 대한 자연 정렬은 수행하지 않습니다.
줄을 정렬할 때 텍스트가 서버로 전송되나요?
아니요. 모든 정렬은 JavaScript의 Array.sort() 메서드를 사용하여 브라우저에서 실행됩니다. 텍스트는 기기를 떠나지 않습니다. 브라우저 DevTools의 네트워크 탭을 열어 텍스트를 붙여넣고 정렬할 때 요청이 발생하지 않는지 직접 확인할 수 있습니다.
이 도구는 몇 줄까지 처리할 수 있나요?
이 도구는 수만 줄을 잘 처리합니다. V8의 Timsort 구현은 최신 하드웨어에서 100,000줄을 100밀리초 이내에 처리합니다. 수 메가바이트를 초과하는 파일의 경우, Unix sort 명령 같은 CLI 도구가 디스크 기반 병합 정렬과 멀티스레드를 활용할 수 있어 더 효율적입니다.
대소문자 구분 없는 정렬은 어떻게 작동하나요?
이 도구는 { sensitivity: 'base' } 옵션과 함께 String.localeCompare()를 사용하여 "Apple"과 "apple"이 별도 그룹이 아닌 함께 정렬되도록 대소문자를 구분하지 않습니다. 기본적으로 localeCompare()는 대소문자를 구분하며, 대소문자 구분 없는 동작을 위해서는 명시적 옵션이 필요합니다. 대문자가 먼저 오는 엄격한 대소문자 구분 정렬이 필요하다면, -f 플래그 없이 Unix sort 명령을 사용하면 됩니다.
줄 정렬과 중복 제거를 동시에 할 수 있나요?
이 도구는 줄을 정렬하지만 중복은 제거하지 않습니다. 중복 줄을 제거하려면 같은 카테고리에 있는 중복 줄 제거기 도구를 사용하세요. 여기서 먼저 텍스트를 정렬한 다음, 결과를 중복 제거기에 붙여넣어 중복 없이 정렬된 깔끔한 목록을 얻을 수 있습니다.
역순 정렬과 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]).