Bash: выбрать из последовательности групп цифр в строке последнюю группу

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Аватара пользователя

Автор темы
madesta
Сообщения: 1988
Зарегистрирован: 11 июн 2017, 21:47
Решено: 28
Откуда: BY
Благодарил (а): 79 раз
Поблагодарили: 425 раз
Контактная информация:

Bash: выбрать из последовательности групп цифр в строке последнюю группу

#1

18 ноя 2018, 00:09

Задуманная задача представляет из себя реализацию автоматического цикла отбработки команд "запуск приложения - работа - выход из приложения".

В качестве приложения рассматривается клиент Linux appimage облака pCloud. Для его остановки по расписанию планируется использовать команду kill -15 pid_процесса (команда kill -15 срабатывает именно по pid), что соответствует "прошу процесс мягко закрыться".

При работе Linux appimage облака pCloud создаёт несколько процессов:
pcloud-proccesses-1.png
pcloud-proccesses-2.png
Поэтому при определении pid процесса pcloud получается последовательность групп цифр, например: 14682 14661 14632 14620 14616 (получена из команды pidof pcloud> ~/pcloud.txt) Примечание. Если не закрывать все автоматически открывшиеся окна, то таких процессов будет шесть, например: 15282 15254 15233 15204 15192 15188

Экспериментально установлено, что если сделать kill-15 процессу с самым меньшим из полученных значений (то есть из 1-го примера --> kill -15 14616), то задача, в принципе решена. Так как в случае дальнейшего присвоения переменной этого значения, например MYVAR=... , выполняется команда kill -15 $MYVAR и все процессы pcloud "гаснут".

Конкретный вопрос

1) может ли кто-нибудь подсказать как присвоить MYVAR самое последнее значение (14616) из последовательности групп цифр, которые в 1 строку через пробел;
2) или имеется ли способ последовательность 14682 14661 14632 14620 14616 в файле pcloud.txt преобразовать к виду "в столбик"
14682
14661
14632
14620
14616
после чего можно было бы выполнить MYVAR=`sed -n '5p' ~/pcloud.txt`

Решение slant » 18 ноя 2018, 01:29
Простой способ выловить последнее число из ряда:
echo 14682 14661 14632 14620 14616 | grep -o [0-9]*$
Чтобы загнать это в переменную:
MYVAR=`echo 14682 14661 14632 14620 14616 | grep -o [0-9]*$`
Тоже самое, из файла: MYVAR=`cat ~/pcloud.txt | grep -o [0-9]*$` (подразумевается, что в файле именно строчка а не столбик).

Перейти к ответу ➙

Аватара пользователя

slant
Сообщения: 4469
Зарегистрирован: 21 июн 2017, 18:09
Решено: 95
Благодарил (а): 51 раз
Поблагодарили: 1965 раз
Контактная информация:

Bash: выбрать из последовательности групп цифр в строке последнюю группу

#2

18 ноя 2018, 01:29

Простой способ выловить последнее число из ряда:
echo 14682 14661 14632 14620 14616 | grep -o [0-9]*$
Чтобы загнать это в переменную:
MYVAR=`echo 14682 14661 14632 14620 14616 | grep -o [0-9]*$`
Тоже самое, из файла: MYVAR=`cat ~/pcloud.txt | grep -o [0-9]*$` (подразумевается, что в файле именно строчка а не столбик).

Аватара пользователя

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3008 раз
Контактная информация:

Bash: выбрать из последовательности групп цифр в строке последнюю группу

#3

18 ноя 2018, 02:11

еще пара вариантов навскидку :smile:

Код: Выделить всё

▶ echo 14682 14661 14632 14620 14616 | awk '{print $NF}'           
14616

Код: Выделить всё

▶ echo 14682 14661 14632 14620 14616 | rev | cut -d' ' -f 1 | rev
14616
Изображение
   
Изображение

Аватара пользователя

demonlibra
Сообщения: 844
Зарегистрирован: 12 авг 2017, 09:09
Решено: 13
Откуда: Ростов-на-Дону
Благодарил (а): 29 раз
Поблагодарили: 204 раза
Контактная информация:

Bash: выбрать из последовательности групп цифр в строке последнюю группу

#4

18 ноя 2018, 03:23

Может быть так будет проще

Код: Выделить всё

killall -s TERM pcloud
Basic (ZXSpectrum)→Ms-Dos→W95→W98→Me→XP→W7→Ubuntu 15.10→Xubuntu 16.04→Linux Mint 18.2-21.1
Контекстное меню Nemo
Сценарий вывода данных оценки ресурса диска SSD

Аватара пользователя

Автор темы
madesta
Сообщения: 1988
Зарегистрирован: 11 июн 2017, 21:47
Решено: 28
Откуда: BY
Благодарил (а): 79 раз
Поблагодарили: 425 раз
Контактная информация:

Bash: выбрать из последовательности групп цифр в строке последнюю группу

#5

18 ноя 2018, 16:50

Благодарю всех откликнувшихся.
Все предложенные варианты приводят к решению поставленной задачи.

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

Полагаю, что следует отметить какое-то сообщение как решение. Я бы и slant, и Chocobo, и demonlibra отметил как "решено", т.е. установить "решено" каждому из участников обсуждения. ПО форума это позволяет сделать?

Аватара пользователя

rogoznik
Сообщения: 10015
Зарегистрирован: 27 июн 2017, 13:36
Решено: 128
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1950 раз
Контактная информация:

Bash: выбрать из последовательности групп цифр в строке последнюю группу

#6

18 ноя 2018, 16:53

madesta писал(а):
18 ноя 2018, 16:50
ПО форума это позволяет сделать?
К сожалению нет. Можешь отметить только одно.
ИзображениеИзображение

Аватара пользователя

Автор темы
madesta
Сообщения: 1988
Зарегистрирован: 11 июн 2017, 21:47
Решено: 28
Откуда: BY
Благодарил (а): 79 раз
Поблагодарили: 425 раз
Контактная информация:

Bash: выбрать из последовательности групп цифр в строке последнюю группу

#7

18 ноя 2018, 18:40

Хотя ставлю "решено" первому сообщению, хотелось бы подчеркнуть, что изначально хотел "решено" поставить всем. 3-е сообщение содержит в себе команду выключения всех процессов pcloud. При просмотре в диспетчере задач хода выключений клиента от стандартного (от разработчиков) до предложенных вариантов сделано предположение, что основным, всё-таки, является процесс с наименьшим pid, соответствующему pCloud Drive, а все остальные являются или дочерними или зависимыми. Поэтому выключение по наименьшему значению pid показалось более корректным. Может быть cli версия (https://github.com/pcloudcom/console-client) клиента pCloud и свободна от наличия нескольких процессов, но "хотелка" хотела именно GUI.

Ещё раз всех благодарю, высказанное взято "в копилку рецептов".

Закрыто

Вернуться в «Иное программное обеспечение»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей