2012-11-17 6 views
2

ICSV 파일을 반복하고 읽는 동안 새 CSV 파일을 만드시겠습니까?

while read $field1 $field2 $field3 $field4 
do 
    $trimmed=$field2 | sed 's/ *$//g' 
    echo "$trimmed","$field3" >> new.csv 
done < "$FEEDS"/"$DLFILE" 

이 지금은, 수 문제가 read 함께 나는 그것을 CSV 스타일 필드를 분할 할 수 없습니다? 아래 입력 csv 형식을 참조하십시오.

칼럼 3과 칼럼 4를 빼내고 칼럼 2에서 패딩을 벗겨 내야합니다. 따옴표가 필요 없습니다.

의 CSV COL 번호의 형식 : 12-24 (") 25 (,) (26) (")/27 (Field2values) 42 (")/43 (,)/44 (입력란 3 진수 값) "Field1_constant_value " "Field2values", Field3, Field4

Field1은 따옴표 안에 2-23을 따옴표로 묶습니다. Field2는 따옴표 안에 콜론 27-41에서 고정되고 왼쪽에 데이터가 채워집니다 Field3은 10 진수로 소수점 앞에 1,2 또는 3 자리 숫자가 있고 두 번째 뒤에는 패딩이 없습니다 .74에서 시작합니다. Field4는 날짜이고별로 신경 쓰지 않습니다. 지금.

답변

6

예, 읽기를 사용할 수 있습니다. 환경 변수 IFS - 내부 필드 구분 기호 -를 다시 설정하면 현재 값 (기본값은 공백)으로 구분되지 않고 사용자 고유의 구분 기호로 구분됩니다. 지정된 내용 입력 파일 "a.csv"을 고려

:

1,2,3,4-

2,3,4,5

6,3 , 2,1

당신은이 작업을 수행 할 수 있습니다

IFS=',' 
while read f1 f2 f3 f4; do 
    echo "fields[$f1 $f2 $f3 $f4]" 
done < a.csv 
,451,515,

출력은 :

필드 [1 2 3 4]

필드 [1 2 3 4 5]

필드 [6 3 2 1]

+4

'while IFS =, read f1 f2 f3 f4; do ...'는 전체 스크립트에 대해'IFS'를 설정하는 것을 피할 것입니다. –

관련 문제