텍스트를 줄 단위로 처리하는 작업은 개발 중에 자주 발생합니다. 내보낸 데이터 정리, 도메인 목록 중복 제거, 로그 항목 정렬, 스택 트레이스 순서 뒤집기 등이 대표적입니다. 터미널에서는 sort, uniq, awk가 잘 작동하지만, 터미널 없이 브라우저에서 처리하고 싶을 때는 온라인 줄 도구가 가장 빠른 방법입니다.

줄 정렬·중복 제거·정리 온라인으로 →

주요 줄 작업

알파벳순 정렬

목록 정렬은 가장 흔한 텍스트 조작 작업 중 하나입니다. 활용 사례:

  • 코드 리뷰 전에 import나 의존성 목록 정규화
  • .gitignorehosts 파일을 가독성 있게 정렬
  • 단어 목록이나 용어집 알파벳 순서로 정리
  • .env 파일의 환경 변수 이름 정렬

동등한 셸 명령어:

sort input.txt

대소문자 구분 없는 정렬:

sort -f input.txt

역순 정렬:

sort -r input.txt

중복 줄 제거

두 목록을 병합하거나, 로그에 추가하거나, 여러 소스에서 내보내면 중복 줄이 자연스럽게 쌓입니다. 중복 제거는 데이터 정리의 첫 번째 단계입니다.

셸 동등 명령어(awk로 순서 보존):

# 인접한 중복만 제거 (정렬된 입력 필요)
sort input.txt | uniq

# 모든 중복 제거, 첫 번째 발생 보존 (순서 보존)
awk '!seen[$0]++' input.txt

awk 버전은 정렬 단계 없이 첫 번째 발생 순서를 보존하므로 실용적으로 더 유용합니다.

줄 순서 반전

줄 순서 반전은 시간순 로그에서 최신 항목을 맨 위에 보고 싶을 때, 또는 스택 트레이스를 아래에서 위로 읽고 싶을 때 유용합니다.

# macOS
tail -r input.txt

# Linux
tac input.txt

빈 줄 제거

PDF, HTML, CSV에서 텍스트를 추출하면 빈 줄이 자주 나타납니다. 제거하면 더 깔끔한 작업 세트를 얻을 수 있습니다.

grep -v '^$' input.txt

sed 사용 시:

sed '/^[[:space:]]*$/d' input.txt

앞뒤 공백 제거

목록에서 선행·후행 공백은 숨겨진 문제를 일으킵니다. 동일해 보이는 두 항목이 조인, 중복 제거, 조회에서 일치하지 않을 수 있습니다.

sed 's/^[[:space:]]*//;s/[[:space:]]*$//' input.txt

실제 개발 사용 사례

의존성 목록 중복 제거

여러 기여자의 requirements를 병합한 후 중복은 흔합니다:

Before:
requests==2.31.0
numpy==1.26.0
requests==2.31.0
pandas==2.1.0
numpy==1.26.0

After deduplication:
requests==2.31.0
numpy==1.26.0
pandas==2.1.0

hosts 파일 항목 정렬

수천 개의 항목이 있는 hosts 파일이나 DNS 차단 목록은 정렬되어 있으면 유지 관리가 쉽습니다:

0.0.0.0 ads.example.com
0.0.0.0 analytics.example.com
0.0.0.0 tracking.example.com

정렬된 항목은 중복을 발견하고 특정 도메인을 찾기 쉽게 합니다.

로그 내보내기 정리

Datadog, Grafana Loki, Splunk에서 로그를 내보내 텍스트 에디터에 붙여넣으면 시간 창 겹침으로 인한 중복 줄이나 여분의 빈 줄이 생길 수 있습니다. 중복 제거 + 빈 줄 제거로 깔끔한 작업 세트를 얻을 수 있습니다.

API 테스트 데이터 정규화

시간이 지나면서 쌓인 테스트 ID나 테스트 엔드포인트 목록은 중복과 불규칙한 순서를 가지기 쉽습니다. 버전 관리에 체크인하기 전에 정렬 + 중복 제거로 팀 전체에 일관성을 유지할 수 있습니다.

클립보드 데이터 처리

스프레드시트 열, DB 쿼리 결과의 ID 목록, PDF에서 복사한 텍스트 블록을 처리할 때 원시 붙여넣기에는 보통 다음이 필요합니다:

  1. 공백 제거 (열 값에 패딩이 있을 수 있음)
  2. 빈 줄 제거 (선택 영역의 빈 행)
  3. 중복 제거 (피벗 테이블이 값을 반복할 수 있음)
  4. 정렬 (가독성이나 비교를 위해)

커맨드라인 레퍼런스

터미널을 선호하는 분들을 위한 줄 작업 참조표:

작업명령어
알파벳순 정렬sort file.txt
대소문자 구분 없는 정렬sort -f file.txt
역순 정렬sort -r file.txt
숫자 정렬sort -n file.txt
인접한 중복 제거sort file.txt | uniq
모든 중복 제거 (순서 보존)awk '!seen[$0]++' file.txt
중복 카운트sort file.txt | uniq -c | sort -rn
줄 순서 반전tac file.txt (Linux) / tail -r file.txt (macOS)
빈 줄 제거grep -v '^$' file.txt
공백 제거sed 's/^[[:space:]]*//;s/[[:space:]]*$//' file.txt
줄 수 카운트wc -l file.txt

브라우저 도구 vs 터미널: 언제 무엇을 쓸까

터미널은 대용량 파일과 자동화에 강합니다. 브라우저 도구가 유리한 경우:

  • 터미널을 사용할 수 없는 환경 (WSL 없는 Windows, 원격 데스크탑)
  • 데이터가 브라우저 컨텍스트에서 왔을 때 (웹 페이지 복사, 폼 출력, API 응답)
  • 터미널 창을 열지 않고 빠르게 일회성 작업을 하고 싶을 때
  • 기술적이지 않은 팀원이 같은 작업을 해야 할 때

같은 데이터 파이프라인에서 반복 작업은 스크립트로 만드세요. 일회성 정리는 브라우저 도구에 붙여넣고 끝내는 것이 효율적입니다.

코드로 줄 처리하기

JavaScript

const text = `apple\nbanana\napple\ncherry\nbanana`;

const lines = text.split('\n');
const sorted = [...lines].sort();
const unique = [...new Set(lines)];
const reversed = [...lines].reverse();
const noBlank = lines.filter(line => line.trim() !== '');

Python

text = "apple\nbanana\napple\ncherry\nbanana"

lines = text.splitlines()
sorted_lines = sorted(lines)
unique_lines = list(dict.fromkeys(lines))  # preserves order
reversed_lines = list(reversed(lines))
no_blank = [l for l in lines if l.strip()]

Go

lines := strings.Split(text, "\n")

// Sort
sort.Strings(lines)

// Deduplicate (preserving order)
seen := make(map[string]bool)
unique := []string{}
for _, line := range lines {
    if !seen[line] {
        seen[line] = true
        unique = append(unique, line)
    }
}

터미널 없이 텍스트 줄 정리

브라우저에서 빠르게 텍스트 줄 작업을 하려면:

줄 도구 열기 → — 텍스트를 붙여넣고 정렬·중복 제거·반전·트림을 선택한 후 결과를 복사하세요.