/엔지니어/Linux / Shell/grep · cut · sort · uniq · w
Linux / Shell초급UbuntuDebianCentOSmacOSgrepcutsort

grep · cut · sort · uniq · wc 파이프라인 실전

grep 정규식, cut 필드 분리, sort 정렬, uniq 중복 제거, wc 카운트를 파이프라인으로 조합하는 현업 패턴을 정리합니다.

grep — 패턴 검색

Bash
# 기본 검색
grep "error" /var/log/syslog

# 대소문자 무시
grep -i "ERROR" app.log

# 정규식
grep -E "^(GET|POST) /api" access.log

# 역 매칭 (패턴 제외)
grep -v "^#" /etc/nginx/nginx.conf

# 컨텍스트 출력 (전후 3줄)
grep -C 3 "FATAL" app.log

# 재귀 검색
grep -r "TODO" ./src --include="*.ts"

# 파일명만 출력
grep -rl "deprecated" ./src

# 줄 번호 표시
grep -n "listen" /etc/nginx/nginx.conf

cut — 필드 추출

Bash
# 구분자로 필드 추출 (콜론, 3번째 필드)
cut -d: -f3 /etc/passwd

# 여러 필드
cut -d: -f1,3 /etc/passwd

# 바이트 위치로 자르기
cut -c1-10 file.txt

# CSV에서 두 번째 열
cut -d, -f2 data.csv

sort — 정렬

Bash
# 기본 정렬
sort file.txt

# 역순
sort -r file.txt

# 숫자 정렬
sort -n numbers.txt

# 필드 기준 정렬 (공백 구분, 3번째 필드)
sort -k3 -n access.log

# 중복 제거하며 정렬
sort -u file.txt

# 사람이 읽기 쉬운 단위 정렬 (1K, 2M, 3G)
du -sh * | sort -h

uniq — 중복 처리

Bash
# 연속 중복 제거 (sort 후 사용)
sort file.txt | uniq

# 중복 횟수 카운트
sort file.txt | uniq -c

# 중복된 줄만 출력
sort file.txt | uniq -d

# 유일한 줄만 출력
sort file.txt | uniq -u

wc — 카운트

Bash
wc -l file.txt      # 줄 수
wc -w file.txt      # 단어 수
wc -c file.txt      # 바이트 수

# 디렉터리 내 파일 수
ls /etc | wc -l

# 특정 패턴 줄 수
grep -c "ERROR" app.log

파이프라인 실전 조합

Bash
# Nginx 로그 — 상태코드별 집계 Top 5
awk '{print $9}' /var/log/nginx/access.log \
  | sort | uniq -c | sort -rn | head -5

# 접속 IP Top 10
cut -d' ' -f1 access.log | sort | uniq -c | sort -rn | head -10

# 에러 로그에서 유니크 에러 메시지만
grep "ERROR" app.log | cut -d']' -f2 | sort -u

# /etc/passwd에서 bash 쓰는 사용자 목록
grep "/bash$" /etc/passwd | cut -d: -f1 | sort

# 프로세스 중 메모리 Top 5
ps aux | sort -k4 -rn | head -6 | awk '{print $4"%", $11}'

# 현재 디렉터리 확장자별 파일 수
find . -type f | grep -oE '\.[^.]+$' | sort | uniq -c | sort -rn

중복 제거 — sort · uniq 실전

uniq연속된 중복만 제거하므로 반드시 sort를 먼저 건다.

Bash
sort file.txt | uniq                 # 중복 줄 제거
sort file.txt | uniq -c              # 각 줄 등장 횟수
sort file.txt | uniq -d              # 중복된 줄만 표시
grep "ERROR" app.log | sort | uniq -c | sort -rn   # 에러 빈도 top
awk '!seen[$0]++' file.txt           # 정렬 없이 원래 순서 유지하며 중복 제거
#grep#cut#sort#uniq#텍스트처리#linux
편집 안내 · Editorial Note

이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.

관련 공식 문서GNU/Linux man 페이지

질문 & 답변 (Q&A)

이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.