Строка синтаксического анализа с ударом и числом извлечения

Мне производили состояние супервизора, будучи похож на это.

frontend                         RUNNING    pid 16652, uptime 2:11:17
nginx                            RUNNING    pid 16651, uptime 2:11:17
redis                            RUNNING    pid 16607, uptime 2:11:32

Я должен извлечь PID nginx. Я сделал это через grep-P команда, но на удаленной машине grep является сборкой без поддержки регулярного выражения жемчуга.

Похож на sed, или awk точно, в чем я нуждаюсь, но я не делаю знакомый с ними.

Помогите мне найти путь, как сделать это, заранее спасибо.

14
задан cleg 15 June 2010 в 13:20
поделиться

6 ответов

sed 's/.*pid \([0-9]*\).*/\1/'
16
ответ дан 1 December 2019 в 08:15
поделиться
$ cat $your_output | sed -s 's/.*pid \([0-9]\+\),.*/\1/'
16652
16651
16607
3
ответ дан 1 December 2019 в 08:15
поделиться

Использование только AWK:

awk -F'[ ,]+' '{print $4}' inputfile
6
ответ дан 1 December 2019 в 08:15
поделиться

если предположить, что реализация grep поддерживает опцию -o, можно использовать две команды greps:

output \
  | grep -o '^nginx[[:space:]]\+[[:upper:]]\+[[:space:]]\+pid [0-9]\+' \
  | grep -o '[0-9]\+$'
1
ответ дан 1 December 2019 в 08:15
поделиться

Решение с помощью awk и cut

vinko@parrot:~$ cat test
frontend                         RUNNING    pid 16652, uptime 2:11:17
nginx                            RUNNING    pid 16651, uptime 2:11:17
redis                            RUNNING    pid 16607, uptime 2:11:32
vinko@parrot:~$ awk '{print $4}' test | cut -d, -f 1
16652
16651
16607

только для nginx:

vinko@parrot:~$ grep nginx test | awk '{print $4}' | cut -d, -f 1
16651
5
ответ дан 1 December 2019 в 08:15
поделиться

Взгляните на pgrep , вариант grep, специально разработанный для таблиц процессов grep.

2
ответ дан 1 December 2019 в 08:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: