从终端中的csv文件中读取列,忽略标题

时间:2015-12-11 11:06:39

标签: ksh

我正在编写一个简单的.ksh文件,从.csv文件中读取一列,然后将输出打印到屏幕上:

fname=($(cut -d, -f2 "myfile.csv"))
# loop through these names
for i in ${fname[@]}; 
do echo "$i"
done

这很好但我不想返回标题行,即文件的第一行。如何更改cut命令以使其忽略第一个值或字符串。在这种情况下,标题称为“名称”。我想打印这个文件的所有其他行。

话虽如此,是否更容易从2:fname循环,因为代码当前正在编写,或者最好是改变cut命令?

1 个答案:

答案 0 :(得分:2)

你可以做到

fname=($(sed 1d myfile.csv | cut -d, -f2))

或者,数组的第一个元素的索引是0:在索引1处开始循环:

for i in "${fname[@]:1}"; do

演示:

$ a=(a b c d e f)
$ echo "${a[@]:1}"
b c d e f

注意,您应该始终将数组扩展放在双引号中。