cut 명령어는 각 입력 줄에서 지정한 문자 위치나 필드를 선택합니다. 구분 기호와 필드 위치가 일정한 구조화된 텍스트에 가장 적합합니다.
예제에 사용할 탭 구분 파일을 만들어 보겠습니다. printf는 \t를 실제 탭으로, \n을 줄 바꿈으로 해석합니다.
$ printf 'name\trole\nalice\tadmin\nbob\tviewer\n' > team.tsv
Text-Fu · 레슨 6
cut으로 각 줄에서 문자 위치나 구분된 필드를 선택하는 방법을 배웁니다.
cut 명령어는 각 입력 줄에서 지정한 문자 위치나 필드를 선택합니다. 구분 기호와 필드 위치가 일정한 구조화된 텍스트에 가장 적합합니다.
예제에 사용할 탭 구분 파일을 만들어 보겠습니다. printf는 \t를 실제 탭으로, \n을 줄 바꿈으로 해석합니다.
$ printf 'name\trole\nalice\tadmin\nbob\tviewer\n' > team.tsv
각 줄에서 위치를 선택하려면 -c LIST를 사용합니다. 위치는 1부터 시작합니다.
$ cut -c 1 team.tsv
n
a
b
목록에는 개별 위치와 범위를 지정할 수 있습니다.
$ cut -c 1-4 team.tsv
name
alic
bob
$ cut -c 1,3 team.tsv
nm
ai
bb
공백, 탭, 문장 부호도 한 위치를 차지합니다. cut은 각 줄을 독립적으로 처리합니다.
names.txt의 모든 줄에서 첫 번째 문자를 출력하는 명령어는 무엇인가요?
필드를 선택하려면 -f LIST를 사용합니다. 기본 구분 기호는 탭입니다.
$ cut -f 2 team.tsv
role
admin
viewer
문자 선택과 마찬가지로 목록에는 1, 1,3, 2-4, -3, 2- 같은 값을 지정할 수 있습니다.
team.tsv의 모든 줄에서 탭으로 구분된 두 번째 필드를 출력하는 명령어는 무엇인가요?
필드가 탭 이외의 문자로 구분되어 있으면 -f와 함께 -d CHARACTER를 사용합니다. 다음 예제는 세미콜론 구분 데이터를 만듭니다.
$ printf 'alice;admin\nbob;viewer\n' > team.txt
$ cut -d ';' -f 1 team.txt
alice
bob
이 형식의 구분 기호는 한 문자입니다. 따옴표로 묶지 않은 세미콜론은 쉘에서 제어 의미가 있으므로 ;를 따옴표로 묶습니다.
team.txt에서 세미콜론으로 구분된 두 번째 필드를 출력하는 명령어는 무엇인가요?
필드 모드에서 cut은 일반적으로 구분 기호가 없는 줄을 그대로 출력합니다. 그런 줄을 제외하려면 -s를 추가합니다.
$ printf 'alice;admin\nheader\nbob;viewer\n' | cut -s -d ';' -f 2
admin
viewer
이 기능은 일반적인 CSV 파일을 검증하지 않습니다. CSV에는 따옴표로 묶은 구분 기호, 줄 바꿈, 이스케이프 규칙이 있을 수 있으며 한 문자 분할로는 이를 이해할 수 없습니다. 이런 데이터에는 CSV 전용 도구를 사용하세요.
cut -d ':' -f 1에서 -s는 무엇을 하나요?
파일을 지정하지 않거나 입력 피연산자로 -를 사용하면 cut은 표준 입력을 읽습니다. 따라서 파이프라인 단계로 자연스럽게 사용할 수 있습니다.
$ printf 'red:1\nblue:2\n' | cut -d ':' -f 1
red
blue
generate-data | cut -d ':' -f 1에서 cut은 어디에서 입력을 읽나요?
위치와 필드 선택을 연습하려면 다음 실습을 진행해 보세요.
cut 명령어로 텍스트 파일의 특정 열이나 필드를 추출하는 방법을 직접 연습합니다.cut, grep, wc, sort, uniq 같은 텍스트 처리 도구를 활용합니다.레슨 완료
이제 cut으로 줄 단위 텍스트에서 예측 가능한 위치를 선택할 수 있습니다.
개별 문자 위치나 범위를 선택할 수 있습니다.
-f로 탭 구분 필드를 추출할 수 있습니다.
-d로 한 문자 구분 기호를 지정할 수 있습니다.
필요할 때 구분 기호가 없는 줄을 제외할 수 있습니다.
파일이나 표준 입력에서 구조화된 텍스트를 읽을 수 있습니다.