gpt4 book ai didi

bash - 每次删除一组变量

转载 作者:行者123 更新时间:2023-11-30 09:13:17 24 4
gpt4 key购买 nike

我有一个问题,
事实上,我有一个存储数据的文本文件:第一行有一个数字表示观测值的数量,第二行表示变量的数量,从第三行开始,数据矩阵开始:每行代表一个个体每列代表一个变量。

例如,我的数据库由 3 个观测值和 4 个变量组成,如下所示:

3
4
8 5 6 4 1
7 6 1 5 2
4 8 2 7 2

最后一列代表每个观察的类别

我寻找一个程序,它给我3个(变量数量 - 1)个数据库,第一个由第一个变量和类组成,第二个由前两个变量和类组成,第三个由第一个变量和类组成前三个变量和类的最后一列,所以我的新数据库必须是文本格式(第一行:观察数,第二行:变量数)第一个文本文件将是:

3
1
8 1
7 2
4 2

第二个文本文件将是:

3
2
8 5 1
7 6 2
4 8 2

第三个文本文件将是:

3
3
8 5 6 1
7 6 1 2
4 8 2 2

我有一个程序,每次都会删除一个变量,我想对其进行midify,以便它给出上面解释的内容

程序是:

#!/bin/sh
#script.sh

#initialisation du compteur
i=0
index=0
nb0=0
nbV=0
tab[1]=0
#fichier="test.txt"
fichier=$1

old_IFS=$IFS
#découper les lignes en fonction du formatage du fichier texte
#pour un autre formatage, modifier l'environnement de la commande read
#en adaptant l'IFS(Internal Field Separator)

while IFS='$\n' read -r ligne; do
#traitement des lignes 1 et 2
if [ "$i" -eq 0 ]; then
echo "nbO : $ligne"
nbO=$ligne
elif [ "$i" -eq 1 ]; then
echo "nbV: $ligne"
nbV=$ligne
while [ "$index" -lt "$nbV" ]
do
echo $nbO >> Output_$(($index+1)).txt
index=$(($index+1))
done
index=0
while [ "$index" -lt "$nbV" ]
do
echo $(($nbV-1)) >> Output_$(($index+1)).txt
index=$(($index+1))
done

else
index=0
IFS=' '
read -a array <<<"$ligne"
#récuperer le nombre de variables à partir
#de la taille du tableau contenant les variables
nbV=${#array[*]}


while [ "$index" -lt "$nbV" ]
do

#supprimer l'élement de l'indice index
temp=("${array[@]}")
unset temp[$index]

#echo ${temp[@]}
#echo ${array[$index]} >> Output_$(($index+1)).txt

echo ${temp[@]} >> Output_$(($index+1)).txt
index=$(($index+1))
done
fi
#incrementation du compteur
i=$(($i+1))
#index=0

done < "$fichier"

IFS=$old_IFS

exit 0

#passer en mode root
#tapez dans la console shell la commande sudo su
#puis entrez votre mot de passe

#pour créer un script
#gedit nom_script.sh

#pour exécuter un script
#donnez les droits d'execution à votre script
#en tapant la commande chmod +x script.sh
#pour executer le script tapez bash script.sh chemin_database

我希望我能解释一下我想做什么,我将非常感谢任何可以帮助我的人

谢谢

最后一个问题,如果我有一个矩阵

8    5   6   4   1
7 8 2 7 2
4 3 2 5 2

我怎样才能得到最大值的总和,它意味着每行的最大值的总和,对于上面的例子,最大第一行8,最大第二行8,最大最后一行5,我想要结果21也就是(8+8+5),非常感谢

最佳答案

好的,这里只是一个建议:不应该这么困难...阅读 join 命令的手册页另请阅读 pastecut 的手册页...google awksed 命令以及

关于bash - 每次删除一组变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21659226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com