Извлечение чисел из файла - PullRequest
1 голос
/ 09 ноября 2011

У меня есть текстовый файл "80 50 65 100 2 35 1", и мне нужно добавить каждое число в Var или, что еще лучше, все они в массиве. как ...

var1 = 80 var2 = 50

или

массив [0] = 80

. Кстати, номер после этого должен быть функциональным. Я имею в виду, я должен быть в состоянии сумма = $ var1 + $ var2 например. Есть способ сделать это ? Спасибо !!

Ответы [ 3 ]

4 голосов
/ 09 ноября 2011

Если все ваши числа в строке, используйте read

read -a array < numbers.txt

Если они в нескольких строках, вы можете изменить разделитель конца строки следующим образом:

read -d'\0' -a array < numbers.txt

А теперь у вас есть массив

printf 'Number: %s\n' "${array[@]}"

Ах да, и суммирование.Много способов, если у вас есть массив, но как насчет

printf '%s + ' "${array[@]}" | xargs -I{} echo {} 0 | bc

Или сделать все это в одном процессе

for n in "${array[@]}" ; do let sum+=$n ; done ; echo $sum
2 голосов
/ 09 ноября 2011

В bash можно сказать

array=( $(< numbers.txt) )
sum=$( IFS=+; echo "${array[*]}" | bc )
1 голос
/ 09 ноября 2011

Так что если у вас есть файл nums.dat как

80 50 65 100 2 35 1

Вы можете прочитать их в массив с помощью

read -a MYARRAY < nums.dat

Если у вас намного старше bash или даже ksh, то это было что-то вроде (точно не помню, извините)

set -A MYARRAY $(cat nums.dat)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...