- •Лабораторна робота 3
- •Базові регулярні вираження
- •Метасимволы, використовувані в регулярних вираженнях
- •Приклади регулярних виражень
- •Приклад виконання лабораторної роботи n3 Завдання 1
- •Завдання 2
- •Завдання 3
- •Варіанти індивідуальних завдань
- •Хід роботи
- •Вибрані команди Unix. Короткий опис:
- •Приклад виконання лабораторної роботи n4 Завдання 1
- •Завдання 1, варіант 1
- •Завдання 1, варіант 2
- •Завдання 1, варіант 3
- •Завдання 2
- •Завдання 2 варіант 1
- •Завдання 2, варіант 2
- •Завдання 2, варіант 3
- •Завдання 3
- •Завдання 3 варіант 1
- •Завдання 3 варіант 2
- •Варіанти індивідуальних завдань
- •Хід роботи
- •Команда awk :
- •Опис шаблонів
- •Приклад виконання лабораторної роботи n5 Приклад 1-1
- •Приклад 1-2
- •Приклад 1-3
- •Приклад 2-3.1
- •Приклад 2-3.2
- •Приклад 2-3.3
- •Приклад 2-3.4
- •Варіанти індивідуальних завдань
- •Команда sh:
- •Команда env:
- •Приклад виконання лабораторної роботи n6
- •Варіанти індивідуальних завдань
- •Хід роботи
- •Деякі приклади програмування
- •Приклад 2
- •Приклад 3
- •Варіанти індивідуальних завдань
Приклад 3
Завдання За інформацією файлів /home/metod/query* для заданого коду товару визначити, скільки його екземплярів було продано в заданий місяць.
Формат застосування:
команда місяць код_товару...
Місяць задається у форматі: MON-YY, наприклад: JAN-90, JUN-89, NOV-17 і т.п.
Cкрипт названий ex7_3, його текст із докладними коментарями приводиться нижче.
#!/bin/bash2
# ============================================================== #
# Скрипт ex7_3: вибірка обсягу продажів заданого товару #
# ============================================================== #
# Вибирається 1-й параметр і список параметрів зрушується
mon=$1; shift
# =======================================================
# Місяць записується у файл
echo "$mon" >$HOME/temp01
# =======================================================
# Інші параметри команди являють собою список кодів товарів.
# Цикл, який виконується доти, поки залишаються
# неопрацьовані параметри.
while [ $# -ne 0 ]
do
# =====================================================
# Код товару запам'ятовується в змінній і записується у файл
code=$1
echo "$code" >$HOME/temp02
# =====================================================
# КОНВЕЄР 1
# =====================================================
# У файлі query5 віддаляються зайві пробіли
sed -n 's/ */ /gp' /home/metod/query5 |
# =====================================================
# Вибираються стовпці: код замовлення, код товару, кількість
cut -f2,3,5 -d' ' |
# =====================================================
# Сортування по коду товару
sort +1 -2 -t' ' |
# =====================================================
# З'єднання з файлом - кодом товару
join -j1 2 -j2 1 -t' ' - $HOME/temp02 |
# =====================================================
# Вибираються стовпці: код замовлення, кількість
# (код товару більше не потрібний)
cut -f2,3 -d' ' |
# =====================================================
# Сортування по коду замовлення й збереження у файлі
sort +0 -1 -t' ' >$HOME/temp03
#
# =====================================================
# КОНВЕЄР 2
# =====================================================
# У файлі query4 віддаляються зайві пробіли
sed -n 's/ */ /gp' /home/metod/query4 |
# =====================================================
# Вибираються стовпці: код замовлення, дата
cut -f1,4 -d' ' |
# =====================================================
# Сортування по коду замовлення
sort +0 -1 -t' ' |
# =====================================================
# З'єднання з файлом - місяцем
sed -n '/'$mon'/p' |
# =====================================================
# Вибирається стовпець коду замовлення
# (дата більше не потрібна)
cut -f1 -d' ' |
# =====================================================
# Сортування по коду
sort +0 -1 -t' ' |
# =====================================================
# З'єднання з файлом замовлень по заданому товару
join -j1 1 -j2 1 - $HOME/temp03 |
# =====================================================
# Вибирається стовпець кількості
cut -f2 -d' ' >$HOME/temp01
# =====================================================
# Початкове значення суми - 0
sum=0
# =====================================================
# Уміст файлу temp01 составляеn список циклу for
for value in `cat $HOME/temp01`
do
# ===================================================
# Підсумовування елементів списку
sum=`expr "$sum" + "$value"`
done
# =====================================================
# Вивід результату
echo "Продане товару $code в $mon - $sum шт."
# =====================================================
# Зрушення списку параметрів
shift
# =====================================================
# Кінець циклу перебору параметрjв
done
# =======================================================
# Після виходу із циклу - видалення тимчасових файлів
rm $HOME/temp01
rm $HOME/temp02
rm $HOME/temp03
# ======== Кінець скрипта ex7_3 ================================= #
Зразок виконання створеної команди:
bash2-2.05$ sh sss JAN-91 100860 100861 100862 Продане товару 100860 в JAN-91 - 100 шт. Продане товару 100861 в JAN-91 - 20 шт. Продане товару 100862 в JAN-91 - 0 шт. bash2-2.05$
|
|