bash中的均衡指数

时间:2011-01-12 23:08:20

标签: linux arrays bash

我需要用bash计算均衡指数。

  

序列的平衡指数是   序列的索引,以便   较低指数的元素总和   等于的元素之和   更高的指数。

考虑以下输入数据:

-7#1#5#
2#-4#3#0

我首先使用以下sed命令将#更改为换行符并计算元素数量:

`sed 's/#/\n/g' input.txt | wc -l`

这给了我以下输出:

-7
1
5
2
-4
3

如何在索引号后面显示数组元素的值,例如:

table[0] => -7
table[1] => 1
.
.
.
table[5] => 3

3 个答案:

答案 0 :(得分:4)

使用

IFS='#'
table=( $(< input.txt) )

然后可以通过

访问每个元素
${table[0]}
${table[1]}
...

答案 1 :(得分:0)

根据您目前的情况,您可以使用tail +n从流中删除n第一行。然后,您可以通过head -n1阅读下一个。

答案 2 :(得分:0)

问题解决了。谢谢你们的帮助。

#!/bin/bash

cat input.txt | awk '{if($0~/^>/){print"\n"$0;next}else{printf("%s",$0)}}' > output.txt

IFS='#';table=( $( < output.txt ) );count=${#table[@]}

idx=$(( $count-1 ))

right=0

for (( i=0;i<=$idx;i++ ))
do  
    (( left+=${table[i]} ))
    if [ $left == $right ] 
      then
      echo "( EQ INDEX: $i, EQ VALUE: ${table[i]} )"
    fi
    (( right-=${table[i]} ))
done