2013-10-20 2 views
1

bash를 사용하여 텍스트 처리를 배우려고합니다.알 수없는 열 수를 가진 csv 파일의 Bash 처리

첫 번째 행이 열 머리글로 알려지지 않은 개수의 열이있는 CSV 파일을 읽고 처리하도록 만드는 bash 스크립트를 만드는 방법은 무엇입니까?

예 입력 :

column1,column2,...,columnn 
value11,value12,...,value1n 
value21,value22,...,value2n 
... 
valuem1,valuem2,...,valuemn 

출력 :

#!/bin/bash 
IFS=',' 
read -a headers 
while read -a line; do 
    for i in "${!line[@]}"; do 
     echo "${headers[i]}: ${line[i]}" 
    done 
done 

일어나는 것들이다 :

column1: value11 
column2: value12 
... 
columnn: value1n 

column1: value21 
column2: value22 
... 
columnn: value2n 

... 

column1: valuem1 
column2: valuem2 
... 
columnn: valuemn 
+1

나는 파이썬이나 펄을 사용하고 그들의 csv 모듈을 사용할 것을 제안한다. – Joe

답변

6

하나 개의 간단한 방식은 IFS=, 설정 및 배열로 읽을 read -a를 사용하는 첫 번째 라인은 1 차원 배열로 읽혀진다., $IFS의 문자에 따라 분리됩니다. 이후의 행은 입력이 가능한 동안 읽히고, !"${!line[@]}"에 bash에 배열 값 대신에 배열 인덱스를 반복하도록 지시합니다.

데이터에서 쉼표 리터럴을 포함하는 이스케이프 메소드를 사용하는 경우에는 작동하지 않습니다.

관련 문제