Server/Shell

Text-Processing Basic - cut, paste, join

체리필터 2006. 11. 7. 17:18
728x90
반응형
  • cut
    • 데이터 필드를 칼럼별로 구분하기 위해 제공되는 tool 이다. 디폴트 delimiter는 tab이며 -f 옵션을 통해 정의할 수 있다.
cat test
one   two   three
four   five   six
seven   eight   nine

cut -f2 test
two
five
eight

cut -f1,3 test
one   three
four   six
seven   nine

    • -f 옵션 외에 다음과 같은 옵션들이 있다.
      • -c : Allows you to specify characters instead of fields
      • -d : Allows you to specify a delimiter other than the tab
  • paste
    • cut 명령어가 파일로부터 내용을 선택하는 것이라면 paste나 join 명령어는 field를 combine 하는데 사용된다.
cat fileone
seoul
incheon
pusan
taegu
daejeon

cat filetwo
Newyork
LA
boston
san
washington

paste fileone filetwo
seoul   Newyork
incheon   LA
pusan   boston
taegu   san
daejeon   washington

    • -d 옵션을 사용함으로써 구분시 Tab 문자가 아닌 정의된 문자를 사용할 수 있다.
paste -d"." fileone filetwo
seoul.Newyork
incheon.LA
pusan.boston
taegu.san
daejeon.washington

    • -s 옵션을 사용하면 다음과 같이 출력할 수 있다.
paste -s fileone filetwo
seoul   incheon   pusan   taegu   daejeon
Newyork   LA   boston   san   washington

paste -s -d"." fileone filetwo
seoul.incheon.pusan.taegu.daejeon
Newyork.LA.boston.san.washington

  • join
    • paste 명령의 기능 확장버전이라 생각할 수 있다
join fileone filetwo
    • 결과는 아무것도 출력되지 않는다. join 명령어는 먼저 파일들간의 공통 field를 찾고 기본적으로는 첫번째 필드를 공통으로 찾는다. 예를 들어 fileone과 filetwo의 첫번째 필드를 숫자로 채워놓으면
cat fileone
1111   seoul
2222   incheon
3333   pusan
4444   taegu
5555   daejeon

cat filetwo
1111   Newyork
2222   LA
3333   boston
4444   san
5555   washington

join fileone filetwo
1111   seoul Newyork
2222   incheon   LA
3333   pusan   boston
4444   taegu   san
5555   daejeon   washington

    • 반드시 첫번째 필드만을 공통필드로 찾게 할 필요는 없다
cat fileone
seoul   1111
incheon   2222
pusan   3333
taegu   4444
daejeon   5555

cat filetwo
1111   Newyork
2222   LA
3333   boston
4444   san
5555   washington

join -1 2 -2 1 fileone filetwo
1111   seoul   Newyork
2222   incheon   LA
3333   pusan   boston
4444   taegu   san
5555   daejeon   washington

    • -1 옵션은 첫번째 파일을 의미하며 -2 옵션은 두번째 파일을 의미한다.

728x90
반응형