从文件中提取数字

时间:2011-11-09 14:46:33

标签: linux bash shell scripting

我有一个txt文件“80 50 65 100 2 35 1”,我需要在Var中添加每个数字,或者甚至更好地将它们全部添加到数组中。 喜欢......

VAR1 = 80    var2 = 50

数组[0] = 80

。之后的数字必须是正常的。我的意思是我需要能够      sum = $ var1 + $ var2 例如。 有没有办法做到这一点 ?谢谢!!

3 个答案:

答案 0 :(得分:4)

如果您的号码都在一行,请使用read

read -a array < numbers.txt

如果它们在多行上,您可以像这样更改行尾分隔符

read -d'\0' -a array < numbers.txt

现在你有一个数组

printf 'Number: %s\n' "${array[@]}"
噢,是的,总结。一旦你有一个数组,有很多方法,但是如何

printf '%s + ' "${array[@]}" | xargs -I{} echo {} 0 | bc

或者在一个过程中完成所有操作

for n in "${array[@]}" ; do let sum+=$n ; done ; echo $sum

答案 1 :(得分:2)

在bash中,你可以说

array=( $(< numbers.txt) )
sum=$( IFS=+; echo "${array[*]}" | bc )

答案 2 :(得分:1)

因此,如果你有一个像文件nums.dat

80 50 65 100 2 35 1

您可以使用

将这些内容读入数组
read -a MYARRAY < nums.dat

如果你有一个更老的bash甚至ksh那么它就像(不记得确切对不起)

set -A MYARRAY $(cat nums.dat)