2012-11-27 39 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

相关问题