Мне производили состояние супервизора, будучи похож на это.
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 точно, в чем я нуждаюсь, но я не делаю знакомый с ними.
Помогите мне найти путь, как сделать это, заранее спасибо.
$ cat $your_output | sed -s 's/.*pid \([0-9]\+\),.*/\1/'
16652
16651
16607
Использование только AWK:
awk -F'[ ,]+' '{print $4}' inputfile
если предположить, что реализация grep поддерживает опцию -o
, можно использовать две команды greps:
output \
| grep -o '^nginx[[:space:]]\+[[:upper:]]\+[[:space:]]\+pid [0-9]\+' \
| grep -o '[0-9]\+$'
Решение с помощью 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
Взгляните на pgrep , вариант grep, специально разработанный для таблиц процессов grep.