Contanto que os dados sejam delimitados por espaço, você pode carregar o conteúdo do arquivo em uma matriz da seguinte forma:
arr=$(< data.txt)
Quando os dados forem carregados na matriz, $arr
, você poderá usar um loop for
para percorrê-lo e realizar sua divisão por 1024.
$ for num in ${arr[*]}; do
res=$( expr $num / 1024 )
echo "$num / 1024 = $res"
done
Exemplo
$ for num in ${arr[*]}; do res=$( expr $num / 1024 ); echo "$num / 1024 = $res";done
4096 / 1024 = 4
1230 / 1024 = 1
4560 / 1024 = 4
1024 / 1024 = 1
Se você deseja obter resultados de ponto flutuante, em vez de números inteiros, use bc
para fazer isso:
$ for num in ${arr[*]}; do
res=$(echo "scale=2; $num/1024" |bc)
echo "$num / 1024 = $res"
done
4096 / 1024 = 4.00
1230 / 1024 = 1.20
4560 / 1024 = 4.45
1024 / 1024 = 1.00
Você pode controlar o número de casas decimais alterando o valor passado para scale=
. Definindo 'scale=5
:
4096 / 1024 = 4.00000
1230 / 1024 = 1.20117
4560 / 1024 = 4.45312
1024 / 1024 = 1.00000
Referências