понедельник, 22 апреля 2019 г.

Вывод из файла определённых строк средствами bash


Необходимость вывода определённых строк из файла возникла при дальнейшем анализе автоматически созданных отчётов о состоянии Диска Яндекс. Особенно это актуально при использовании нескольких аккаунтов Диска Яндекс с целью определения: вместится ли туда дополнительный объём информации или надо ждать освобождения доступного дискового пространства в результате автоматической очистки его Корзины (или очищать Корзину вручную). После выполнения команды yandex-disk status и записи результатов в файл yandex-disk.txt, например

yandex-disk status > /home/user/reposrts/yandex-disk.txt

в некоторых случаях полученная информация является избыточной. Предметом интереса является только расход дискового пространства, в то время как файл отчёта содержит множество других сведений:

Статус ядра синхронизации: ожидание команды
Путь к папке Яндекс.Диска: '/home/user/Yandex.Disk/account1'
Всего: 43 GB
Занято: 38.44 GB
Свободно: 4.56 GB
Максимальный размер файла: 50 GB
Размер корзины: 6,38 GB

Последние синхронизированные пути:

...

Из полученного файла предмет интереса составляют строки "Занято", "Свободно", "Размер корзины". Другими словами, интерес представляют только строки 4, 5 и 7.

С этой целью создан скрипт на bash, в котором

reports – указание каталога отчётов,

values – указание каталога для записи промежуточных значений,

sed -n -e 4,5p -e 7p  – команда вывода 4, 5 и 7 строк из файла отчёта accoun1.txt

#!/bin/bash
reports=/home/user/reports
values=/home/user/reports/values
yandex-disk status > $values/accoun1.txt
sed -n -e 4,5p -e 7p $values/account1.txt > $reports/account1.txt
exit

В результате его выполнения получается желаемый результат:

Занято: 38.44 GB
Свободно: 4.56 GB
Размер корзины: 6,38 GB

При "разборе полётов" был использован материал ресурса rus-linux.net.

Комментариев нет:

Отправить комментарий