[유닉스] 필드 잘라내기 ( cut )


cut

  • 파일의 선택된 필드를 추출
  • 형식 : cut [옵션] [파일]
  • 옵션
    • -c 리스트 : 각 행에서 잘라낸 문자의 위치를 지정
    • -f 필드번호 : 지정한 필드를 잘라냄
    • -d 문자 : 필드 구분자
  • 사용 예
    • cut –c 1-3 test
    • cut –f 3 test


문자 추출 : -c

  • 예제 파일 만들기
    • cut 명령은 탭으로 구분되어야 다른 필드로 인식
$ cp test_sort2 test_cut
$ cat test_cut
001 Hong Gil-Dong 80 M
002 Park Ji-Sung 76 M
003 Cha Doo-Ri 90 M
004 Park Chan-Ho 88 M
005 Kim Yun-A 50 F
006 Bae Sue-Ji 48 F
007 Han So-Ri 49 F
$
  • 파일에서 원하는 문자열 추출
    • 5번째에서 8번째 문자열까지 추출하는 예제
$ cut –c 5-8 test_cut
Hong
Park
Cha
Park
Kim
Bae
Han
$
  • who를 이용해 시스템에 접속 중인 사용자의 이름만 추출
$ who | cut –c 1-8 | sort
ksshin
ksshin
ksshin
ksshin
user1
$


필드 추출 : -f

  • cut 명령은 문자열보다 필드 추출에 더 많이 사용
$ cut –f 1 test_cut
001
002
003
004
005
006
007
$ 
  • 데이터 파일에서 성과 이름이 필요하면 2번과 3번 필드를 추출
$ cut –f 2,3 test_cut
Hong Gil-Dong
Park Ji-Sung
Cha Doo-Ri
Park Chan-Ho
Kim Yun-A
Bae Sue-Ji
Han So-Ri
$ 


필드 구분자 지정 : -d

  • 필드 구분자로 탭이 아닌 다른 문자사용 가능
    • /etc/passwd 파일의 첫 번째 필드를 추출하는 예제
$ cut –d: -f 1 /etc/passwd | more
root
daemon
bin
sys
sync
......
$
  • 파일의 내용이 탭이 아닌 공백으로 구분되어 있으면 공백을 필드 구분자로 지정
$ cut –d’ ‘ -f 2 test_sort2
Hong
Park
Cha
Park
Kim
Bae
Han
$