Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Регулярки в баше  (Прочитано 1251 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн barmaley99

  • Автор темы
  • Участник
  • *
  • Сообщений: 118
    • Просмотр профиля
Регулярки в баше
« : 11 Июня 2021, 14:14:28 »
Всем привет, подскажите как правильно в баше грепнуть, и выбрать, в выводе нужное выражение? К примеру мне нужно из вывода

ps -p пидпроцесса

выбрать название процесса К примеру Firefox у меня был запущен с pid 10326

вывод ps -p 10326 выдаёт:

PID TTY TIME CMD 10326 ? 00:00:18 firefox
Получается мне надо «выгрепнуть» самое последнее целое слово, т.к. есть процессы в названиях которых не все так гладко как в фаерфоксе - там в названиях есть и цифры и точки и всякие символы и в будущем может понадобится грепать и их то получается что единственной особенностью названия процесса является то что он не содержит в себе пробелов

Тогда грепаю так:

ps -p 10326 | grep -E ‘10326.+(\S+)$’

Но получаю целую строчку

10326 ? 00:00:18 firefox

А мне надо только последний слитный набор символов кроме пробела, т.е. «firefox»

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

a1=$(ps -p 10326 | grep -E ‘10326.+(\S+)$’)

echo $a1

Помогите плиз!

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6690
  • 20% Cooler
    • Просмотр профиля
Re: Регулярки в баше
« Ответ #1 : 11 Июня 2021, 17:19:36 »
ps --no-headers -p 10326 -o cmd
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн agtrif

  • Любитель
  • *
  • Сообщений: 60
    • Просмотр профиля
Re: Регулярки в баше
« Ответ #2 : 23 Июня 2021, 14:18:42 »
awk не предлагать?
echo "PID TTY TIME CMD 10326 ? 00:00:18 firefox" | awk '{ print $NF }'

 

Страница сгенерирована за 0.05 секунд. Запросов: 22.