使用for循环在unix脚本中访问csv文件中的每一列

时间:2017-04-13 04:31:06

标签: unix for-loop awk scripting

我想知道使用for循环读取csv文件时单独访问每个列(f1,f2,f3)的语法

for(i=1;i<=NF;i++)
printf "<TD>%s</TD>", $i

我不能使用while格式,因为我在&#34; awk&#34;中编写了上述代码。命令和文件名稍后指定。请告诉我如何修改上面的代码以单独访问每个列,因为我需要在if语句中访问它。

上面的代码正在访问整行。例如; -

Keys,YES,565 
Adam,NO,980 
Shannon,YES,980 

我想访问第二列并使用它在awk中放入if条件。 if($ f2 =&#34; NO&#34;)。这也可以使用上面的代码完成吗?

将替换以下部分代码以将输出作为html文件

for(i=1;i<=NF;i++)
printf "<TD>%s</TD>", $i
print "</TR>" }

2 个答案:

答案 0 :(得分:0)

由于这个问题很模糊,我只能猜一个答案。您需要使用适当的字段分隔符:

awk -F',' '{ print $2 }' some_file

答案 1 :(得分:0)

尝试这样的代码。

CSV_FILE=a.csv
DATA=$(cat ${CSV_FILE})
for line in $DATA ;do
    ELEMENT=`echo $line | awk -F "\"*,\"*" '{print $3}'`
    echo $ELEMENT
    ##You have your if condition here##
done