18.7.6. Выполнение суммирования

18.7.6. Выполнение суммирования

Довольно часто приходится сталкиваться с задачей считывания информации из файла и выполнения суммирования по определенным столбцам, содержащим числа. Предположим, в файле total.txt находятся данные о продажах отделами stat и gift..

$ pg total.txt

STAT 3444
GIFT 233
GIFT 252
GIFT 932
STAT 212
STAT 923
GIFT 129

Задача состоит в подсчете общей суммы всех записей отдела gift. Чтобы сохранить общие значения сумм, применим оператор expr. Как показано в следующем операторе expr, переменным loop и total первоначально вне цикла присваивается значение ноль. Когда сценарий выполняет цикл, значение переменной items добавляется к значению переменной total. В первую итерацию цикла входит только первый пункт, но в дальнейшем к накапливающимся значениям переменной total добавляются значения переменной items.

Следующий оператор expr увеличивает значение счетчика.

LOOP=0

TOTAL=0

while…

TOTAL=`expr $TOTAL + $ITEMS`

ITEMS=`expr $ITEMS + 1`

done

Очень распространенной является такая ошибка: при работе с оператором expr забывают сначала инициализировать переменную.

LOOP=0

TOTAL=0

Если переменная не инициализирована, на экране появится сообщение об ошибочном применении оператора expr. При необходимости можно инициализировать переменную в цикле:

TOTAL=`expr ${TOTAL:=0} + ${ITEMS}`

В вышеприведенном примере переменной total присваивается значение нуль, если эта переменная не имеет значения. Чаще распространен первый вариант инициализации переменных с помощью оператора expr. Не забывайте выводить на экран конечное общее значение, полученное в результате выполнения цикла.

Рассмотрим следующий сценарий.

$ pg total

#!/bin/sh

#общая сумма

#инициализация переменных

LOOP=0

TOTAL=0

COUNT=0

echo "items Dept"

echo " "

while read DEPT ITEMS do

# сохраните результаты подсчета при просмотре общих записей

COUNT=`expr $COUNT + 1`

if [ "$DEPT"="GIFT" ]; then

# сохраните выполнение суммирования TOTAL=`expr $TOTAL + $ITEMS` ITEMS=`expr $ITEMS + 1`

echo -e "$ITEMS $DEPT"

fi

#echo $DEPT $ITEMS done < total.txt

echo $TOTAL

echo "There were $COUNT entries altogether in the file"

При выполнении сценария получим:

$ total

Items Dept
234 GIFT
253 GIFT
933 GIFT
130 GIFT
====== ======
1546

There were 7 entries altogether in the file

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

5.3. Выполнение команд

Из книги Linux для пользователя автора Костромин Виктор Алексеевич

5.3. Выполнение команд Как было отмечено выше, одна из основных функций оболочки состоит в том, чтобы организовать исполнение команд пользователя, вводимых им в командной строке. В частности, оболочка предоставляет пользователю два специальных оператора для организации


Параллельное выполнение CLR

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Параллельное выполнение CLR "Копнув" чуть глубже, мы увидим, что платформа .NET поддерживает параллельное выполнение, т.е. на одной машине можно установить несколько версий платформы .NET (во время создания этой книги были доступны версии 1.0.1.1 и 2.0). Сам файл mscoree.dll размещается в


Выполнение команд

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

Выполнение команд До сих пор мы только указывали свойства и параметры объекта Command, но не выполняли эти команды. Существует три стандартных способа выполнения команд для объекта Command и один способ для объекта SqlCommand.• Метод ExecuteNonQuery. Выполняет команду SQL и не возвращает


if - Выполнение или не выполнение предложений в зависимости от условий

Из книги Справочник по Flash автора Коллектив авторов

if - Выполнение или не выполнение предложений в зависимости от условий ifПозволяет выполнить или не выполняет определенные предложения в зависимости от заданного условияСинтаксис:if (condition) { statements}Аргументы:В целом, предложение if завершается закрывающей фигурной скобкой


Выполнение AMANDA

Из книги Сетевые средства Linux автора Смит Родерик В.

Выполнение AMANDA Пакет AMANDA включает программное обеспечение как сервера, так и клиента. Серверные программы следует установить на компьютере, выполняющем функции сервера резервного копирования, а клиентские программы — на клиенте резервного копирования. Для


Выполнение преобразования

Из книги Технология XSLT автора Валиков Алексей Николаевич

Выполнение преобразования Несмотря на полную свободу в порядке выполнения шаблонов, правила изменения контекста и компоновки результирующего дерева, спецификация XSLT оговаривает очень четко — это делает XSLT весьма гибким языком, программы на котором при этом


Выполнение макросов

Из книги VBA для чайников автора Каммингс Стив

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


Выполнение макроса

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

Выполнение макроса Запуск макроса из диалогового окна Макрос вряд ли можно назвать большим достижением.Выполняемая при этом последовательность шагов должна быть такой.1. Выберите макрос из списка ниже поля Имя.2. Щелкните на кнопке Выполнить.Ну как, круто? Как


Выполнение программы

Из книги MySQL 5.0. Библиотека программиста автора Гольцман Виктор Иосифович

Выполнение программы Каждая программа на языке Си содержит главную функцию. В языке Си главная функция программы должна иметь имя main. С функции main начинается выполнение программы; обычно она управляет выполнением программы, организуя вызовы других функций. Программа


2.1. Выполнение SQL-команд

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

2.1. Выполнение SQL-команд Прежде чем выполнять SQL-команды, необходимо подключиться к работающему серверу MySQL (как это сделать, рассказывалось в главе 1). В этом разделе вы узнаете, как создавать SQL-команды и передавать их серверу для выполнения.Если вы используете командную


Выполнение восстановления

Из книги Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript автора Розенцвейг Гэри

Выполнение восстановления Синтаксис восстановления базы данных из копии следующий.POSIX:$] ./gbak {-c[reate] | -r[eplace_database] } <режимы> исходная-копия база-данных или$] /opt/firebird/bin/gbak {-c[reate] | -r[eplace_database] } <режимы> исходная-копия база-данныхWindows:C:Program FilesFirebirdFirebird_1_5in> {-c[reate] | -r[eplace database]


Выполнение проверки

Из книги Недокументированные и малоизвестные возможности Windows XP автора Клименко Роман Александрович

Выполнение проверки В первую очередь используются переключатели -v[alidate] и -f[ull] утилиты gfix для проверки структур записей и страниц. Процесс проверки сообщает о разрушенных структурах и освобождает неназначенные фрагменты записей или "осиротевших страниц" (т. е. страниц,


Выполнение и оптимизация

Из книги Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil автора Ковязин Алексей Николаевич

Выполнение и оптимизация При разработке игр с помощью программы Flash всегда возникает вопрос о скорости. До пятой версии Flash язык программирования был недостаточно эффективным и не позволял создавать многие игры. Но даже версия 5 была довольно медленной. Достаточно


Выполнение файлов

Из книги Как тестируют в Google автора Уиттакер Джеймс

Выполнение файлов Теперь рассмотрим несколько команд для выполнения или регистрации файлов. Например, как можно установить INF-файл с помощью команды rundll32.exe? Для этого применяется несколько команд, каждая из которых предназначена для отдельной версии INF-файлов.Чтобы


Выполнение тестов

Из книги автора

Выполнение тестов Автоматизация тестирования — это больше, чем просто написание отдельных тестов. Если подумать, что еще нужно для хорошего результата, мы увидим, что в автоматизации не обойтись без компиляции тестов и их выполнения, анализа, сортировки и формирования