将一行转换为数组并将数组元素作为变量打印在bash

时间:2016-01-03 09:29:52

标签: arrays bash

我是linux新手,我尝试逐行阅读文本文件。这些行是数字。我想在数组中添加每一行并将每个数字视为变量。我的审判如下:
txt文件示例:

1976   1   0  0.00    0.    68.    37.     0.   105.  0.14 0.02    4.3    1.1    2.2

我需要什么:
将每个数字放在一个变量中。例如a = 1976b = 1等...... 我的代码:

IFS=$'\n'
for next in `cat $filename`
do

line=$next

echo ${line[0]}
done

结果:

1976   1   0  0.00    0.    68.    37.     0.   105.  0.14 0.02    4.3    1.1    2.2

2 个答案:

答案 0 :(得分:1)

将每个值存储在数组中非常容易。这是一个例子:

while read -r -a line
do
 echo "${line[0]}"
 echo "${line[1]}"
 echo "${line[2]}"
done < $filename

-a line将输入行拆分为单词(默认为空格分隔),并将结果存储在line数组中。

阅读男人的片段:

  

-a每个名称都是一个索引数组变量(参见上面的数组)。

你不需要'-r'选项。它基本上使读取处理\在输入中没有什么特别之处。

答案 1 :(得分:0)

# Add each line to Array
readarray -t aa < $filename
# Put each line into variables using Here String
for l in "${aa[@]}"; do
  read a b c <<< $l;     # Example using 3 variables, could be as many as on line
  # Do whatever has to be done with a, b, c, etc
done