LINUX.ORG.RU

Просумировать столбец


0

0

Есть текстовый файл вида со строками вида:
text 555555 15555555
Надо просумировать второй столбец, причём общая сумма может получиться с 10-12 знаками (просто может что-нибудь не понимает большие цифры).

anonymous

bc  is a language that supports arbitrary precision numbers


# intersperses $1 between stdin arguments and writes to stdout
DEF_INTERSPERSE='intersperse() \
                 {             \
                     { xargs -n 1 printf "$1%s"; echo; } | sed "s/^$1//"; \
                  }'
eval "$DEF_INTERSPERSE"

{ echo '{'; cat file | awk '{ print $2 }' | intersperse +; echo '}'; } | bc

dilmah ★★★★★
()
Ответ на: комментарий от sdio

А можно без bc - как-нибудь через bash.
Попробовал так:
echo $((`cat file | awk '{print $2}' | tr '\n' '+'; echo '0'`))
- работает, но не знаю как там bash обрабатывает большие числа ( максимум что у меня может быть это (10^11)-1 ).

anonymous
()
Ответ на: комментарий от anonymous

Попробовал - максимум что bash понимает - 2^31. А может есть что-нибудь типа long long int для bash-а.

anonymous
()
Ответ на: комментарий от anonymous

>А можно без bc - как-нибудь через bash.
>Попробовал так:
>echo $((`cat file | awk '{print $2}' | tr '\n' '+'; echo '0'`)) 

Чем тебе bc не угодил?
cat, awk, tr -- не мешают?

sdio ★★★★★
()
Ответ на: комментарий от anonymous

bc стандартизована. А как раз $((...)) нет.

dilmah ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.