我需要用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
答案 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