【问题标题】:Access each column from csv file in unix scripting using a for loop使用 for 循环在 unix 脚本中访问 c​​sv 文件中的每一列
【发布时间】:2017-09-09 01:28:12
【问题描述】:

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

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

我无法使用 while 格式,因为我正在“awk”命令中编写上述代码,并且文件名稍后指定。请让我知道如何修改上述代码以单独访问每一列,因为我需要在 if 语句中访问它。

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

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

我想访问第二列并用它在 awk 中放置一个 if 条件。如果($f2="否")。使用上面的代码也可以做到吗?

就是把下面部分代码替换成html文件输出

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

【问题讨论】:

  • 嗯,这就是单独访问每一列的代码。除此之外,您需要更具体地了解您的需求。
  • 上面的代码正在访问整行。例如; - Keys,YES,565 Adam,NO,980 Shannon,YES,980 我想访问第二列并使用它在 awk 中放置一个 if 条件。如果($f2="否")。使用上面的代码也可以做到吗?
  • 请只显示您的预期输出。

标签: unix for-loop awk scripting


【解决方案1】:

试试这样的代码。

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    

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-26
      • 1970-01-01
      • 2021-01-16
      • 1970-01-01
      • 1970-01-01
      • 2022-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多