我在bash中编写了一个简单的函数来搜索CSV文件的第一行并返回匹配标题值的列号:
Race Day Athlete Position firsts Total 1st Position
0 Day 1 Steve 1 1.0 1.0
1 Day 1 Jane 2 0.0 0.0
2 Day 1 Bill 3 0.0 0.0
3 Day 2 Bill 1 1.0 1.0
4 Day 2 Steve 2 0.0 1.0
5 Day 2 Jane 3 0.0 0.0
6 Day 3 Jane 1 1.0 1.0
7 Day 3 Bill 2 0.0 1.0
8 Day 3 Steve 3 0.0 1.0
9 Day 4 Steve 1 1.0 2.0
10 Day 4 Jane 2 0.0 1.0
11 Day 4 Bill 3 0.0 1.0
当我调用该函数时:
findcolnum()
{
colnum=`head -1 $1 | awk -F"," '{for(i=1;i<NF;i++) if($i==$2) {print i}}'`
echo $colnum
}
无论列是否存在,结果始终为“2”。
在命令行中,我在将命令放入脚本之前对其进行了测试,它返回了正确的值:
analogcol=`findcolnum "$DIR/PCICCP_AnalogPoint_DMS.csv" "AnalogPointRef"`
有谁能帮我理解这里发生了什么?