Похоже, вам нужна только часть столбца команды, вся строка до FMCore
и следующий пробел.
Вы можете напрямую получить столбец cmd, используя ps -Ao command
(в Linux, это ps -e -o cmd
), затем захватывает строки, содержащие FMCore
с grep [F]MCore
, а затем удаляет все после FMCore
и любые 0+ непробельных символов, следующих за ним с
ps -Ao command | grep [F]MCore | sed 's/\(FMCore[^[:space:]]*\).*/\1/'
. [F]MCore
используется вместо FMCore
, чтобы избежать вывода сведений о команде grep
.
Команда 's/\(FMCore[^[:space:]]*\).*/\1/'
sed
будет соответствовать FMCore
+ любым 0+ непробельным символам после ее размещениястрока в группу 1, и .*
будет просто соответствовать остальной части строки, а заполнитель \1
вернет FMCore
с пробелами обратно в результат.
Также возможноиспользуйте awk
после получения строки cmd, чтобы захватить все поля до первого, имеющего FMCore
:
ps -Ao command | awk '/FMCore/{s=""; for (i=1;i<=NF;i++) if ($i !~ /FMCore/) {s=s $i" "} else {s=s $i; break}; print s}'