【问题标题】:Extracting numbers from file从文件中提取数字
【发布时间】:2011-11-09 14:46:32
【问题描述】:

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

var1=80 var2=50

数组[0]=80

.顺便说一下,后面的数字必须是功能性的。我的意思是我需要能够 总和= $var1 +$var2 例如。 有没有办法做到这一点 ?谢谢!!

【问题讨论】:

  • 都是一行还是多行?

标签: linux bash shell scripting


【解决方案1】:

如果您的号码都在一条线上,请使用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

【讨论】:

  • 我的文件中的数字是多行的,所以我使用了 read -d'\0' -a array
  • 要打印数组,请执行echo "${array[@]}"
【解决方案2】:

在 bash 中,你可以说

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

【讨论】:

    【解决方案3】:

    所以如果你有一个nums.dat 喜欢的文件

    80 50 65 100 2 35 1
    

    你可以用

    将这些读入一个数组
    read -a MYARRAY < nums.dat
    

    如果你有一个更老的bash 甚至是ksh,那么它就像(不记得很抱歉)

    set -A MYARRAY $(cat nums.dat)
    

    【讨论】:

      猜你喜欢
      • 2020-12-28
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多