fichier d'abord, file_utm:BASH, fusionner deux fichiers, matrice triangulaire inférieure et supérieure, en un seul fichier
1.3 3.5 2.8
2.1 1.4
0.5
fichier Deuxièmement, file_ltm:
1.3
3.5 2.1
2.8 1.4 0.5
Et une condition, quand if i=j; then i=j=0; fi
Fichier de sortie:
0 1.3 3.5 2.8
1.3 0 2.1 1.4
3.5 2.1 0 0.5
2.8 1.4 0.5 0
C'est ce que j'ai essayé:
#!/bin/bash
for ((x=1; x<=3; x++))
do
awk -v var=$x 'NR==var' file_utm > ROW
awk -v var=$x 'NR==var' file_ltm > COLUMN
for ((y=1; y<=3; y++))
do
R=`awk -F "\t" -v var=$y '{print $var}' ROW`
C=`awk -F "\t" -v var=$y '{print $var}' COLUMN`
echo $R >> file
echo $C >> file
rm ROW
rm COLUMN
done
done
L'autre option que j'ai bien est de remplir un fichier avec une matrice que des espaces, séparés par des onglets, et remplir cette matrice par une valeur donnée et aborder la positions de ligne et de colonne. Je sais comment le faire en C++, mais pas en bash et en utilisant i.e. awk.
Merci. Mais, quand je l'ai essayé avec deux gros fichiers, ça ne marche pas. Les fichiers ASCII peuvent être atteints à: we.tl/TSBTSqacrj –
@ Another.Chemist, je travaille pour votre entrée actuelle de la question. J'ai observé les lignes dans vos fichiers - ils ont un nombre de colonnes incohérent/arbitraire et ne font pas partie d'une grande matrice – RomanPerekhrest
Ok, c'est vrai, merci, +1 pour votre réponse –