Linux bash中的平衡指数
我需要在bash中计算一个平衡指数 序列的平衡指数是 对序列进行索引,以便 较低指数的元素之和 等于处的元素之和 更高的指数 考虑以下输入数据:Linux bash中的平衡指数,linux,arrays,bash,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]
-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
使用
使用
根据您当前拥有的,您可以使用tail+n从流中删除n条第一行。然后您可以通过head-n1读取下一行。根据您当前拥有的内容,您可以使用tail+n从流中删除n行第一行。然后您可以通过head-n1阅读下一篇文章。问题已解决。谢谢你们的帮助
#!/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
问题解决了。谢谢你们的帮助
#!/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
元素数为${table[@]}。${table[@]}命令显示table是一个单元素表$cat input.txt-7152-430$IFS=;$表=$
#!/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