Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

문서에서 원하는 필드 가져오기

cut(:12)은 줄단위로 필요한 부분을 가져오기 위한 용도로 사용된다.

다음과 같은 문서가 있다. 우리는 2번째 필드의 값만을 가져오기를 원한다. C(:12)프로그램을 만들 수도 있고, Perl(:12)과 같은 언어를 이용하면 비교적 수월하게 가져올 수 있겠지만 이런 간단한 일을 하는데 언어까지 사용해야 하는건 압박이다.

cut을 이용하면 간단하게 해결할 수 있다.
1796 41 #간구::간구
8 1 #간단문::간단문
1 0 #간단문답아우::간단문답아우
664 1 #간단하자::간단하자
69 7 #간략하::간략하
1 10 #간만이네블로거로::간만이네블로거로
34 1 #간만입::간만입
1 1 #간부산::간부산
1153 5 #간소간::간소간
1 1 #간식번역::간식번역
1 9 #간식할아버지::간식할아버지
4221 42 #간염::간염
906 10 #간이침대::간이침대
710 2 #간절곶이란::간절곶이란
6 7 #간지레벨::간지레벨
2 4 #간축::간축
5 4 #간행하::간행하
2 6 #갈기마병::갈기마병
546 6 #갈림길이::갈림길이
3 36 #갈증해소하::갈증해소하

파일의 이름은 test.txt라고 하자.
cat 100k10.dump | cut -d " " -f 2
41
1
0
1
7
10
1
한방에 해결되었다.

다음은 cut의 중요 옵션들이다.
  • -b : 바이트 단위 자르기
  • -c : 캐릭터 단위 자르기
  • -d : 구분자 (delimiter)를 단위로 자르기 위해서 사용
  • -f [N] : 필드를 지정한다.
-f 옵션을 이용해서 필드를 지정할 경우 범위 지정이 가능하다.
  • N : 하나의 필드
  • N- : 필드에서 라인의 마지막까지
  • N-M : N에서 M까지의 필드
  • -M : 라인의 처음부터 M까지의 필드
예제의 cat 100k10.dump | cut -d " " -f 2는 라인을 구분자를 공백문자로 해서 분리를 하고, 분리된것들 중 2번째 필드의 값외에는 다 잘라버려라는 의미가 된다.

cut을 이용해서 아래의 문제를 해결해 보기 바란다.
  1. 첫번째와 두번째의 값만을 가져와 보자.
  2. 주석(#) 이후의 문자값중 "::"를 구분자로 해서 첫번째 단어들만을 가져와 보자.

또다른 응용

grep 결과 정리해서 보여주기

grep(:12)을 이용하면 특정 단어를 포함한 문서의 목록을 가져올 수 있지만, 모든 라인을 출력해서 화면이 너저분해 진다는 단점이 있다.
# grep "test" *
1.dat:721 39 #fastest::fastest
1.dat:1870 111 #tested::tested
1.dat:2781 67 #protestation:sulfuric::protestation:sulfuric
1.dat:16751 204 #thirteenth.contestable:captained::thirteenth.contestable
1.dat:32591 329 #shortest::shortest
100k10.dump:6 3 #test2::Test2
....
cut과 uniq를 이용해서 이 문제를 해결해 보았다.
# grep "test" * | cut -d ":" -f 1 | uniq
1.dat
100k10.dump
100k100.dump
100k100_2.dump
100k10_2.dump
...