1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
| #!/bin/bash
if [ $# -lt 2 ]
then
printf "Saisir fichier d'entrée : "
read fichierEnt
printf "Saisir fichier de sortie : "
read fichierSort
else
fichierEnt=$1
fichierSort=$2
fi
fichierInt=fichier_int
ExPow ()
{
exp=$(echo "(1*2.718281828459)" | bc)
value=1
x=$1
echo "x=$x"
if [ $x -lt 0 ]
then
x2=$(echo $x | awk 'BEGIN{FS="-"} {print $2}')
else
x2=$x
fi
for (( i=1 ; i<=x2 ; i++ ))
do
value=$(echo "$value*$exp" | bc -l)
done
if [ $x -lt 0 ]
then
value=$(echo "1/$value" | bc -l)
fi
}
k=0
cat $fichierEnt | while true
do
read ligne
if [ "$ligne" = "" ]
then
# tri à bulle
for (( m=0 ; m<k ; m++ ))
do
let k2=$k-$m
for (( n=0 ; n<k2 ; n++ ))
do
comp=$(echo "${tab[n]} < ${tab[m]}" | bc)
if [ $comp -eq 1 ]
then
tampon1=${tab[m]}
tampon2=${tab2[m]}
tab[m]=${tab[n]}
tab2[m]=${tab2[n]}
tab[n]=$tampon
tab2[n]=$tampon2
fi
done
l=0
until [ $k -eq 0 ] || [ $l -eq 100 ]
do
let k=$k-1
echo ${tab2[k]} >> $fichierInt
let l=$l+1
done
done
exit
else
set -- $ligne
x=$(echo $3 | awk 'BEGIN{FS="e"} {print $2}')
value2=$(echo $3 | awk 'BEGIN{FS="e"} {print $1}')
x=$(echo $x | bc -l)
exp=$(echo "(1*2.718281828459)" | bc)
value=1
if [ $x -lt 0 ]
then
x2=$(echo $x | awk 'BEGIN{FS="-"} {print $2}')
else
x2=$x
fi
for (( i=1 ; i<=x2 ; i++ ))
do
value=$(echo "$value*$exp" | bc -l)
done
if [ $x -lt 0 ]
then
value=$(echo "1/$value" | bc -l)
fi
tab[k]=$(echo "$value*$value2" | bc -l)
tab2[k]=$(echo $ligne)
let k=$k+1
fi
done
cat $fichierInt | grep insister > $fichierSort
cat $fichierInt | grep joindre >> $fichierSort
rm $fichierInt |