2016-11-09 4 views
0

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

Я должен делать это с помощью определенных команд с использованием труб.

Существует ряд команд: comand.. | comand.. | (comands...) печатные линии в следующем виде:

1 
2 
8 
4 
7 

Результат должен быть , начиная с 1 + 2 + 8 + 4 + 7 = 22.

Я пробовал ... | bc | tr "\n" "+" | bc, но это не сработало.

Я не могу использовать AWK или переменные. Вот почему я прошу о помощи.

ответ

0

Фактически вы можете использовать переменные оболочки C, поскольку они являются частью синтаксиса. Без использования переменных, вам нужно трубы и трубы снова:

your-command | sed '2~1 s/^/+/' | xargs | bc 

В sed команда предваряется плюс характер для всех линий, начиная от второго; xargs соединяет строки как последовательность аргументов.

СЭД выражение может быть улучшена, чтобы отфильтровать нецифровые строки:

'/^[^0-9]\+$/ d; 2~1 s/\([0-9]\+\)/+\1/' 
Смежные вопросы