일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 한성대맛집
- 성신여대편백집
- 방이편백육분삼십
- 통영에어비앤비
- 돈암동맛집
- 통영
- gradle
- 자바스크립트에러처리
- 퇴사후공무원
- 영화추천
- 파이썬
- 공무원
- 통영예쁜카페
- 서울숲누룽지통닭구이
- JavaScript
- npm
- 성신여대맛집
- 성북구맛집
- ELK
- tomcat7
- 스페인여행
- 통영여행
- 뚝섬역맛집
- 한남동맛집
- 꼴뚜기회
- springboot
- 방이편백육분삼십성신여대
- 국가직
- ubuntu자바설치
- react
- Today
- Total
코린이의 기록
[shell script] CSV file에서 특정 column만 추출하는 쉘 스크립트. 본문
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #!/bin/bash LIMIT=1000 echo -n "Input CSV file >> " read CSV_FILE FILENAME=${CSV_FILE%%.*} SUFFIX=${CSV_FILE#*.} CSV_OUT_FILE=${FILENAME}_out_$(date +"%y%m%d%H%M") LINE_NUM=$(wc -l < ${CSV_FILE}) while read line do IFS=',' read -a ARRAY <<< $line echo ${ARRAY[3]},${ARRAY[4]} >> $CSV_OUT_FILE.${SUFFIX=} done < $CSV_FILE if [ "0$LINE_NUM" -gt "$LIMIT" ] then split -d -a 3 -l ${LIMIT} --numeric-suffixes --additional-suffix=.${SUFFIX} $CSV_OUT_FILE.${SUFFIX=} ${CSV_OUT_FILE}_ fi | cs |
line 9 : 입력 받은 csv file의 라인 수, ($()에 명령어를 넣지않으면 쉘 에서 결과 값이 출력됨으로 $()로 묶어줌)
line 10 : 파일 한줄 씩 읽는다.
line 12 : 쉼표 ','를 만나면 array에 저장한다. -a 옵션 : 배열에 할당
line 13 : 4번째와 5번째 column을 쉼표 붙여서 CSV file로 저장한다.
line 16 : 라인 개수가 LIMIT 보다 크면 (-gt) split 명령어로 잘라서 LIMIT 만큼 쪼개서 저장한다.
--numeric-suffixed : 나누어서 저장할 때 뒤에 숫자를 붙여서 저장한다. (-d -a 3 -l 부분에서 3은 숫자 자리수를 의미한다. ex) 000, 001, 002...)
--additional-suffix : 확장자를 붙이기위해 사용한 옵션
참고
http://www.linuxlab.co.kr/docs/12-2.htm
https://outofbedlam.github.io/shell/2016/05/10/ShellScript/
파일 분할/재조립
http://bahndal.egloos.com/456590
https://kyuhyuk.kr/article/linux/2017/01/30/linux-split
https://stackoverflow.com/questions/42379919/wrong-numeric-suffix-using-gnu-split/42380555
http://greatkim91.tistory.com/163
date 함수
문자열 자르기/확장자 추출
http://www.dreamy.pe.kr/zbxe/CodeClip/3766012
https://code.i-harness.com/ko/q/eb9bd
'Script' 카테고리의 다른 글
[NestJS] NestJS 공부 (0) | 2020.08.15 |
---|