2012-11-27 2 views
0

쉘 스크립트를 사용하여 CSV 파일을 읽고 업데이트하는 데 도움이 필요합니다. csv 파일을 읽으려면 아래 코드를 작성 했으므로 제대로 작동합니다.csv 파일을 읽고 업데이트하는 쉘 스크립트

#!/bin/sh 
#This script is to read the excel data 
IFS="," 
echo "Starting to read csv" 
i=1 
while read f1 f2 
do 
    test $i -eq 1 && ((i=i+1)) && continue 
    echo "tenantID is :$f1" 
    echo "status is :$f2" 

#The below command will update the schema with data 

java -Xmx512m -XX:MaxPermSize=128m -jar biz.jar -install -readers=seed -   delegator=default#$f1 

done < TenantId.csv 

echo "end of file " 

위 코드는 정상적으로 작동합니다. 즉, csv 파일을 읽고 tenantID를 java 인수로 전달합니다. 자바 프로세싱이 끝나면 상태 (f2)를 일부 값으로 업데이트하고 싶습니다. 또한 위의 코드에서 빈 줄 또한 실행되고 있습니다. 데이터가있는 행만 처리하는 방법을 알고 싶습니다. 같은 것을 달성하는 방법을 알려주십시오. 사전에

감사

답변

1
while read f1 f2 
do 
    test $i -eq 1 && ((i=i+1)) && continue 
    [ -z "$f1" ] && continue 
    echo "tenantID is :$f1" 
    echo "status is :$f2" 

    #The below command will update the schema with data 

    java -Xmx512m -XX:MaxPermSize=128m -jar biz.jar -install -readers=seed -   delegator=default#$f1 

    echo $f1, XXX >> TenantIdOut.csv 
done < TenantId.csv 

추가 된 코드의 2 개 라인 :

  1. F1을가 null의 경우

    가 계속 -이 빈 줄을 건너 뛸 것입니다.
  2. 레코드 f1과 새 상태를 새 파일에 쓰고 루프 외부에서이 새 파일로 입력 파일의 이름을 바꿀 수 있습니다.
+0

안녕하세요, 정보를 제공해 주셔서 감사합니다. 두 번째 줄에서는 동일한 TenantID.csv 파일을 업데이트하고 다른 파일에 쓰고 싶지 않습니다. 또한 시스템에서 현재 처리중인 행의 상태 (f2) 만 업데이트하려고합니다. – vr3w3c9

+0

while 루프 안에 있기 때문에 입력 파일을 업데이트 할 수 없습니다. 임시 파일에 쓸 수 있으며 while 루프 이후에 입력 파일로 임시 파일의 이름을 바꿀 수 있습니다. – Guru

관련 문제