我正在编写一个简单的.ksh文件,从.csv文件中读取一列,然后将输出打印到屏幕上:
fname=($(cut -d, -f2 "myfile.csv"))
# loop through these names
for i in ${fname[@]};
do echo "$i"
done
这很好但我不想返回标题行,即文件的第一行。如何更改cut命令以使其忽略第一个值或字符串。在这种情况下,标题称为“名称”。我想打印这个文件的所有其他行。
话虽如此,是否更容易从2:fname循环,因为代码当前正在编写,或者最好是改变cut命令?
答案 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
注意,您应该始终将数组扩展放在双引号中。