리눅스2023. 9. 19. 08:50

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/646901 (2021.3.15)

csvtool은 리눅스에서 CSV(comma-separated values) 형식의 파일을 처리할 때 유용한 명령어 기반 프로그램이다. CSV 파일은 쉼표(,)를 구분자로 사용하는데, csvtool을 이용해서 특정 항목(column)을 출력하거나 구분자를 변경할 수 있다.

우선 터미널창에서 아래와 같이 작업하여 설치했다. 데비안/우분투 계열 배포판 기준이다.

# S/W 저장소 정보 갱신
sudo apt-get update

# csvtool 설치
sudo apt-get install csvtool

도움말을 보려면 --help 옵션을 지정하면 된다.

# 도움말 표시
csvtool --help

기본적인 사용법은 아래의 예시를 보면 감이 잡힐 것이다.

# input.csv 파일의 첫번째 항목을 출력(col 1)
csvtool col 1 input.csv

# input.csv 파일의 첫번째, 세번째, 다섯번째 항목을 출력(col 1,3,5)
csvtool col 1,3,5 input.csv

# input.csv 파일의 두번째부터 여섯번째 항목까지 출력(col 2-6)
csvtool col 2-6 input.csv

# input.csv 파일의 모든 항목(첫번째부터 마지막까지) 출력(col 1-)
csvtool col 1- input.csv

구분자는 쉼표(,)가 기본값이지만, 다른 구분자로 변경할 수도 있다. 입력 파일의 구분자는 -t 옵션으로 지정하고 출력의 구분자는 -u 옵션으로 지정한다. 예를 들어 input.csv 파일의 구분자를 쉼표에서 탭(tab)으로 변경해서 output.txt 파일로 저장하고 싶다면 아래와 같이 할 수 있다.

# input.csv 파일의 구분자를 쉼표에서 탭으로 변경하여 output.txt 파일로 저장
csvtool col 1- -t COMMA -u TAB input.csv > output.txt

만약 어떤 출력값을 파이프(|)로 넘겨서 csvtool의 입력으로 보내려면 csvtool에서 파일명 대신 "-" 기호를 사용한다. 아래의 예시를 보자.

# "a,b,c" 문자열에서 첫번째 항목을 출력
echo "a,b,c" | csvtool col 1 -

# input.csv 파일에서 문자열 "TEST"가 포함된 행만 골라낸 후에 두번째부터 여섯번째 항목을 출력
cat input.csv | grep "TEST" | csvtool col 2-6 -

# input.csv 파일에서 문자열 "TEST"가 포함된 행만 골라낸 후에 두번째부터 여섯번째 항목을 출력하되 구분자를 콜론(:)으로 설정
cat input.csv | grep "TEST" | csvtool col 2-6 -u ":" -

728x90
Posted by 반달가면