우분투 실전 명령어 | column으로 로그/목록 표 형태로 정리

언제 쓰는가

로그나 명령 결과를 빠르게 표처럼 정렬해서 눈으로 확인해야 할 때 유용하다. 특히 공백 개수가 들쭉날쭉한 출력은 그대로 보면 비교가 어렵기 때문에, column으로 한 번 정리하면 분석 속도가 확 올라간다.

바로 쓰는 명령어

# 콜론 구분 파일을 표 형태로 보기
column -t -s ':' /etc/passwd | head -n 5
# CSV를 쉼표 기준으로 정렬 출력
column -t -s ',' servers.csv
# 여러 공백으로 구분된 텍스트를 자동 정렬
cat process.txt | column -t

핵심 옵션/패턴

  • -t: 표 형태로 맞춰서 정렬 출력
  • -s '<구분자>': 입력 데이터 구분자 지정
  • 입력 전처리 패턴: sed, tr로 불필요한 공백이나 문자 먼저 정리 후 column 적용
# 세미콜론 구분 로그를 보기 좋게 정렬
awk -F';' '{print $1";"$2";"$5}' app.log | column -t -s ';'

명령 출력 예시

$ column -t -s ':' /etc/passwd | head -n 3
root    x  0     0     root      /root       /bin/bash
daemon  x  1     1     daemon    /usr/sbin   /usr/sbin/nologin
bin     x  2     2     bin       /bin        /usr/sbin/nologin
$ column -t -s ',' servers.csv
name      ip            role
web-01    10.0.1.10     web
batch-01  10.0.2.20     worker
db-01     10.0.3.30     db

자주 하는 실수

  • 쉼표 CSV에 따옴표 안 쉼표가 포함된 경우, 단순 -s ','로 처리하면 열이 틀어질 수 있다
  • 탭과 공백이 섞인 원본을 전처리 없이 바로 column -t에 넣어서 정렬이 어긋나는 경우가 많다
  • 정렬된 출력만 보고 원본 데이터가 바뀐 것으로 착각하는 경우가 있다. column은 보기용 변환이다

검증 방법

# 원본 라인 수와 정렬 출력 라인 수 비교
wc -l servers.csv
column -t -s ',' servers.csv | wc -l
# 특정 열이 기대한 위치로 나오는지 확인
column -t -s ',' servers.csv | awk 'NR==1 || $1=="db-01"'

운영 팁

운영 중에는 원본 파일을 직접 수정하기 전에 column으로 먼저 시각화해서 구조를 확인하는 습관이 좋다. 로그 포맷이 바뀌었는지, 구분자가 깨졌는지 초기에 잡아낼 수 있다. CSV처럼 복잡한 포맷은 필요하면 miller나 csvkit 같은 전용 도구와 같이 쓰는 편이 안전하다.

출처

  • util-linux 매뉴얼
  • Ubuntu Manpages