从每个记录中拆分第一个单词并将其推入到数组中

时间:2015-12-14 17:13:18

标签: bash

inputfile:records.txt

100,Surender,CTS
101,Kumar,TCS
102,Raja,CTS
103,Vijay,TCS

我想存储每条记录的第一列,并将其存储到数组中。

我写了下面的剧本

id_array=();
while read  -a my_line ;

do

  id_array+=(${my_line[0]})

  done < /home/user/surender/linux/inputfiles/records.txt;

 echo ${id_array[0]}
 echo ${id_array[1]}
 echo ${id_array[2]}
 echo ${id_array[3]}

我的预期输出是

100
101
102
103

但是如上面的代码我得到以下输出

 100,Surender,CTS
 101,Kumar,TCS
 102,Raja,CTS
 103,Vijay,TCS

我不知道在上面的脚本中指定相应分隔符(逗号)的位置。

需要一些帮助...

2 个答案:

答案 0 :(得分:3)

替换行:

while read  -a my_line ;

使用:

while IFS=',' read  -a my_line ;

这将使用分隔符,将行拆分为数组。

答案 1 :(得分:1)

有很多方法可以获得第一个字段。剪切是非常直观的,虽然这可能不是最有效的代码:

id_array+=(echo $my_line | cut -d ',' -f 1)

说明:

  • -d ',':分隔符为,
  • -f 1:采取第一个字段

related answer中,您可以找到更有效的方法,将内部字段分隔符(IFS)设置为, ...