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
我不知道在上面的脚本中指定相应分隔符(逗号)的位置。
需要一些帮助...
答案 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)设置为,
...