Сумма чисел с использованием awk

Да, при условии, что вы удовлетворяете условиям лицензии на все упакованное программное обеспечение (отправляете исходный код и т. Д.) И не нарушаете никакие товарные знаки, законы об авторском праве и т. Д. Кроме того, вы должны убедиться, что ваши действия не нанесут вреда любому третьему лицу, например, убийству и т. д.

Включенное программное обеспечение с закрытым исходным кодом не должно нарушать лицензии каких-либо библиотек, которые оно использует (некоторые лицензии допускают двоичную зависимость программного обеспечения с закрытым исходным кодом, некоторые - нет).

2
10.05.2017, 18:24
3 ответа

Поскольку вы настаиваете на том, чтобы сделать это с помощью awk:

awk -F '' '{ sum = 0; for(i=1; i<=NF; i++) sum += $i; print "sum " sum }' file
5
27.01.2020, 21:51

Python 3.x подход (просто альтернативное решение):

sum_digits.py скрипт:

import sys
with open(sys.argv[1], 'r') as f:
    for l in f:
        print("sum", sum(int(d) for d in l if d.isdigit()))

Использование :

python3 sum_digits.py yourfile

Вывод:

sum 8
sum 15
sum 13
1
27.01.2020, 21:51

POSIXly:

awk '{for (i = sum = 0; i++ < length;) s += substr($0, i, 1); print "sum", s}'

Тот же принцип, что и ответ Сато Кацуры: мы складываем все символы в строке; при преобразовании из строки в число символы, являющиеся десятичными цифрами, преобразуются в значение цифры, а остальные преобразуются в 0.

Удаление нецифровых символов (с помощью gsub(/[^0 -9]/, "") или предварительная обработка с помощью tr -cd '0-9\n') может улучшить производительность.

2
27.01.2020, 21:51

Теги

Похожие вопросы