cut으로 구분된 필드 고르기
cut은 구분자가 일정한 입력에서 필요한 필드나 글자 범위를 뽑아. 필드, 구분자와 글자 위치를 다음처럼 지정할 수 있어.
cut -f 2는 탭으로 나눈 두 번째 필드를 골라.cut -d ',' -f 1,3은 쉼표로 나눈 첫 번째와 세 번째 필드를 골라.cut -c 1-10은 각 줄의 처음 10글자를 잘라 내.cut -d ' ' -f 2-는 공백으로 나눈 두 번째 필드부터 끝까지 출력해.
단순한 TSV나 고정 구분자 로그에는 잘 맞지만, 따옴표와 이스케이프 규칙이 있는 입력은 다음 트랙의 awk나 전용 파서를 써야 해.
tr로 문자를 바꾸거나 지우기
tr는 표준 입력을 글자 단위로 읽어서 바꾸거나 지워. 자주 쓰는 형태는 다음과 같아.
tr 'a-z' 'A-Z'는 소문자를 대문자로 바꿔.tr -d ' '는 공백을 지워.tr -s ' '는 이어지는 공백을 하나로 줄여.tr -c 'a-zA-Z0-9' '_'는 영숫자가 아닌 글자를 모두 밑줄로 바꿔.
실제 조합 예시
cut -d ' ' -f 1 access.log | sort -u로 로그의 고유 IP를 모을 수 있어.tr 'A-Z' 'a-z' < INPUT > output은 입력을 소문자로 바꿔 저장해.tr -d '\r' < in.txt > out.txt은 Windows식 줄바꿈의 CR을 제거해.tr '\t' ' '은 탭을 공백으로 바꿔.
cut의 한계
cut은 따옴표 안의 쉼표를 이해하지 못해. 정식 CSV는 csvkit, miller나 Python의 csv 모듈로 처리하고, cut은 구분 규칙이 단순한 로그에 사용해.
구분자가 데이터 안에 들어오면 cut은 멈춰
cut -d,는 CSV의 따옴표와 내장된 comma를 이해하지 않아. 단순한 colon-separated 설정에는 적합하지만 정식 CSV와 escape 규칙이 있는 형식은 파서를 써. 글자 하나를 구분자라고 부른다고 구조가 생기지는 않아.
tr은 바이트와 로케일 경계에 민감해
문자 집합과 range 의미는 로케일에 따라 달라질 수 있고 multi-바이트 텍스트를 원하는 대로 처리하지 못할 수 있어. ASCII 정규화에는 가볍지만 Unicode 대소문자와 단어 변환에는 언어 런타임이나 전용 도구가 더 안전해.