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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

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

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

Оффлайн barmaley99

  • Автор темы
  • Участник
  • *
  • Сообщений: 102
    • Просмотр профиля
Регулярки в баше
« : 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

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

Оффлайн ALiEN175

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 4793
  • Capture the truth
    • Просмотр профиля
Re: Регулярки в баше
« Ответ #1 : 11 Июнь 2021, 17:19:36 »
ps --no-headers -p 10326 -o cmd
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Radeon R7 260X :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

Оффлайн agtrif

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

 

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