Linux Commands

Terminal Shortcut tmux cut jq screen split

file data를 파싱할 때 사용하는 커맨드 중 하나이다.
데이터를 파싱하고, 전처리하는 과정에서 효율이 굉장히 좋은 커맨드.

사용성

  1. 간단한 파일을 일부만 보고 싶을 때 sedawk를 사용해도 되지만, 가장 좋은 성능을 내는 것이 cut이다.
    • 1GB 이상의 큰 파일로 확인을 해보면 확연한 성능 차이를 볼 수 있다.
  2. 큰 파일들을 확인하고 싶을 때 vi는 여는데 한참 걸리지만, cut은 금방 볼 수 있다.
  3. 하나의 라인이 무지막지하게 크다면(예를들면 10GB), vi 등으로 열 수 없는 경우가 있다. 당연히 하나의 라인이라 head로도 확인할 수 없고.. 이럴 때 어떤 데이터인지 cut으로 확인할 수 있다.
    • 물론 이럴때 split을 사용하는 것도 좋다.
  4. python 같은 스크립트를 사용할 때도 데이터를 전처리하면 성능이 크게 올라간다.

이런 데이터 전처리는 파일 사이즈가 크나, 단순하고 동일한 포맷일 때 사용하기 굉장히 좋다.

  • batch 작업을 위한 userdata를 추출해 놓았을 때
  • 많은 양의 단순한 비규격 로그의 파싱이 필요할 때

사용법

몇가지 사용법을 적지만 사실 맨 처음의 cut -d -f의 사용률이 가장 높다.
일부 char를 잘라내야 하는 경우에서도 유용하게 사용된다.

cut의 단점은 char로만 자를 수 있다는 것이지만 생각보다 이렇게 사용할 데이터들이 굉장히 많고, 성능은 그만큼 훌륭하다.
db dump, csv, json과 같이 포맷이 일정한 데이터를 파싱할 때 함께 사용할 수 있다. 파일의 파싱이나 데이터 추출, command pipe에서 자주 사용한다.

예시

cut

delimiter 단위로 자르기

cut -d 'DELIMITER' -f INDEX FILE

-d:

  • 어떤 char로 자를지에 대한 옵션.
  • char만 올 수 있기 때문에, string을 넣을 수 없음.

-f:

  • 자르고 나서 몇 번째의 값을 가지고 올 것인지 설정.
  • N, N-M, N,M-L과 같이 설정 가능.

delimiter가 없는 라인 무시하기

cut -d 'DELIMITER' -f INDEX -s FILE

-s:

  • delimiter가 없는 라인은 아예 출력도 하지 않도록 하는 옵션.

delimiter를 변경하기

cut -d 'DELIMITER' -f INDEX --output-delimiter="OUTPUT DELEMETER" FILE

–output-delimiter:

  • delimiter로 자른 라인의 구분자를 바꿔줄 문자열.

character 단위로 잘라내기

cut -c INDEX

-c:

  • character 단위로 잘라낼 수 있다.
  • 동일하게 N, N-M, N,M-L과 같이 설정 가능.