2015-12-14 53 views
1

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 

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

需要一些帮助。

回答

1

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

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

解释:

  • -d ',':分隔符为,
  • -f 1:拿第一场

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

+0

是的。这有助于。谢谢 –

+0

不客气。如果您的问题解决了,请考虑接受答案... –

3

将行:

while read -a my_line ; 

随着:

while IFS=',' read -a my_line ; 

这将行分成使用定界符,阵列。

相关问题