【问题标题】:read column from csv file in terminal ignoring the header从终端中的 csv 文件中读取列,忽略标题
【发布时间】:2015-12-11 19:20:59
【问题描述】:

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

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

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

话虽如此,在当前编写代码时从 2:fname 循环更容易还是最好更改 cut 命令?

【问题讨论】:

    标签: ksh


    【解决方案1】:

    你可以的

    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
    

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

    【讨论】:

      猜你喜欢
      • 2018-03-25
      • 2019-12-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多