Извлеките часть строки в сценарии удара

Все, что Вы заявляете, корректно, ps только перечислит процессы, принадлежавшие Вам, если Вы не говорите это иначе с x или a или подобные опции. -o устанавливает формат, это не кумулятивно. Так, для получения вывода ps -f с SID добавленный, необходимо будет указать все это использование -o:

$ ps -f 
UID        PID  PPID  C STIME TTY          TIME CMD
terdon   27452 27436  0 02:48 pts/3    00:00:00 /bin/bash
terdon   30622 27452  0 02:51 pts/3    00:00:00 ps -f
$ ps -o user,pid,sid,ppid,c,stime,tty,time,cmd
USER       PID   SID  PPID  C STIME TT           TIME CMD
terdon   27452 27452 27436  0 02:48 pts/3    00:00:00 /bin/bash
terdon   30905 27452 27452  0 02:51 pts/3    00:00:00 ps -o user,pid,sid,ppid,c,stime,tty,time,cmd

Для получения того же вывода для всех пользователей используйте это:

ps -axo user,pid,sid,ppid,c,stime,tty,time,cmd

Самое близкое, к которому можно добраться до добавления в противоположность перезаписи выходного формата, использует -O (это - O как в Oliver, нет 0):

-O format
    Like -o, but preloaded with some default columns.  
    Identical to -o pid,format,state,tname,time,command or
                 -o pid,format,tname,time,cmd

Так, например:

$ ps -O sid
  PID   SID S TTY          TIME COMMAND
 4879 27452 R pts/3    00:00:00 ps -O sid
27452 27452 S pts/3    00:00:00 /bin/bash
2
23.04.2015, 03:14
3 ответа

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

suffix=${OUTPUT#*SauceOnDemandSessionID=}
SAUCE_ID=${suffix%%[!0-9A-Fa-f]*}
3
27.01.2020, 22:05

Если идентификатор всегда одинаковая длина, и состоит из только букв A через F и номера, и в выходе нет подобных строк, вы можете сделать это:

SAUCE_ID="$(echo $OUTPUT | egrep -o '[0-9a-f]{32}')"

ищет строку 32 символов Это либо число в 0-9, либо букве в AF.

Чтобы разрешить изменение длины строки, используйте что-то подобное:

SAUCE_ID="$(echo $OUTPUT | egrep -o '[0-9a-f]{26,38}')"

Этот пример совпадает с любыми из этих строк с 26 и 38 символами. Вы также могли бы использовать это, чтобы сопоставить строки с не менее 26 символов:

SAUCE_ID="$(echo $OUTPUT | egrep -o '[0-9a-f]{26,}')"
0
27.01.2020, 22:05

Использование GREP с PCRE, вы можете использовать тест Regex:

SauceOnDemandSessionID=\K[^ ]*(?= job-name)

:

$ SAUCE_ID=$(grep -Po "SauceOnDemandSessionID=\K[^ ]*(?= job-name)" <<< "$OUTPUT")
$ echo "$SAUCE_ID"
5c72e54365e9bb559ea389dc164ba754

Это будет работать во всех случаях, когда у вас есть SauCeondemandsessionId = до Название работы после шаблона.

0
27.01.2020, 22:05

Теги

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