2012-11-27 36 views
0

我需要使用Shell腳本讀取和更新csv文件的一些幫助。我已經寫了下面的代碼來讀取csv文件,它工作正常。用於讀取和更新csv文件的shell腳本

#!/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 arg。一旦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 

添加兩行代碼:

  1. 如果F1爲空,繼續 - 這是跳過空白行。
  2. 將記錄f1和新狀態寫入新文件,並且在循環外可以使用此新文件重命名輸入文件。
+0

嗨大師,非常感謝您的信息。在第二行中,我想更新相同的TenantID.csv文件,並且不想寫入其他文件。此外,我只想更新系統當前正在處理的行的狀態(f2)。 – vr3w3c9

+0

在while循環中,您無法更新輸入文件。您可以寫入臨時文件,在while循環之後,可以使用輸入文件重命名臨時文件。 – Guru

相關問題